<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
	 
	 <meta name="description" content="XDMF parallel partitioned mesh I/O on top of HDF5">
    
    <meta name="author" content="Víctor Sande Veiga" >
    <link rel="icon" href="../favicon.png">

    <title>hdf5_dataset_per_process_handler.f90 &ndash; XH5For</title>

    <link href="../css/bootstrap.min.css" rel="stylesheet">
    <link href="../css/pygments.css" rel="stylesheet">
    <link href="../css/font-awesome.min.css" rel="stylesheet">
    <link href="../css/local.css" rel="stylesheet">
    

    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
    <!--[if lt IE 9]>
      <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
      <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
    
    <script src="../js/jquery-2.1.3.min.js"></script>
    <script src="../js/svg-pan-zoom.min.js"></script>

  </head>

  <body>

    <!-- Fixed navbar -->
    <nav class="navbar navbar-inverse navbar-fixed-top">
      <div class="container">
        <div class="navbar-header">
          <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <a class="navbar-brand" href="../index.html">XH5For </a>
        </div>
        <div id="navbar" class="navbar-collapse collapse">
          <ul class="nav navbar-nav">
				
            <li class="dropdown hidden-xs visible-sm visible-md hidden-lg">
              <a href="#" class="dropdown-toggle"
              data-toggle="dropdown" role="button"
              aria-haspopup="true"
		 aria-expanded="false">Contents <span class="caret"></span></a>
	      <ul class="dropdown-menu">
              
            <li><a href="../lists/files.html">Source Files</a></li>
				
				
            <li><a href="../lists/modules.html">Modules</a></li>
				
            
                                
            <li><a href="../lists/procedures.html">Procedures</a></li>
				
								
            <li><a href="../lists/types.html">Derived Types</a></li>
				
				
            <li><a href="../lists/programs.html">Programs</a></li>
				
            </ul>
            </li>

<li class="visible-xs hidden-sm visible-lg"><a href="../lists/files.html">Source Files</a></li>


<li class="visible-xs hidden-sm visible-lg"><a href="../lists/modules.html">Modules</a></li>



<li class="visible-xs hidden-sm visible-lg"><a href="../lists/procedures.html">Procedures</a></li>

                             
<li class="visible-xs hidden-sm visible-lg"><a href="../lists/types.html">Derived Types</a></li>


<li class="visible-xs hidden-sm visible-lg"><a href="../lists/programs.html">Programs</a></li>

          </ul>
        
        <form action="../search.html" class="navbar-form navbar-right" role="search">
        <div class="form-group">
          <input type="text" class="form-control" placeholder="Search" name="q" id="tipue_search_input" autocomplete="off" required>
        </div>
<!--
        <button type="submit" class="btn btn-default">Submit</button>
-->
        </form>
        
        </div><!--/.nav-collapse -->
      </div>
    </nav>

    <div class="container">
    
  
  <div class="row">
    <h1>hdf5_dataset_per_process_handler.f90
    <small>Source File</small>
    
    </h1>
    
<div class="row">
  <div class="col-lg-12">
<div class="well well-sm">
  <ul class="list-inline" style="margin-bottom:0px;display:inline">
     
     
     
     
    
    
     <li><i class="fa fa-list-ol"></i>
       <a data-toggle="tooltip"
	  data-placement="bottom" data-html="true"
	  title=" 4.3% of total for source files.">569 statements</a>
     </li> 
     
     
    <li><i class="fa fa-code"></i><a href="../src/hdf5_dataset_per_process_handler.f90"> Source File</a></li>
     
  </ul>
  <ol class="breadcrumb in-well text-right">
  
     <li class="active">hdf5_dataset_per_process_handler.f90</li>
  </ol>
</div>
</div>
</div>
<script>
  $(function () {
  $('[data-toggle="tooltip"]').tooltip()
  })
</script>

  </div>
  <div class="row">
    <div class="col-md-3 hidden-xs hidden-sm visible-md visible-lg">
    
<div id="sidebar">
  






<div class="panel panel-primary">
  <div class="panel-heading text-left"><h3 class="panel-title"><a data-toggle="collapse" href="#mods-0">Modules</a></h3></div>
  <div id="mods-0" class="panel-collapse collapse">
    <div class="list-group">
      
      <a class="list-group-item" href="../module/hdf5_dataset_per_process_handler.html">hdf5_dataset_per_process_handler</a>
      
    </div>
  </div>
</div>















<div class="panel panel-primary">
  <div class="panel-heading text-left"><h3 class="panel-title">Source Code</h3></div>
  <div class="list-group">
    <a class="list-group-item" href="../sourcefile/hdf5_dataset_per_process_handler.f90.html#src">hdf5_dataset_per_process_handler.f90</a>
  </div>
</div>


  <hr>
  

<div class="panel panel-default">
  <div class="panel-heading text-left"><h3 class="panel-title"><a data-toggle="collapse" href="#allfiles-0">All Source Files</a></h3></div>
  <div id="allfiles-0" class="panel-collapse collapse">
    <div class="list-group">
      
      <a class="list-group-item" href="../sourcefile/ch_unstructured_hexahedron_perf.f90.html">ch_unstructured_hexahedron_perf.f90</a>
      
      <a class="list-group-item" href="../sourcefile/fox_xdmf.f90.html">fox_xdmf.f90</a>
      
      <a class="list-group-item" href="../sourcefile/hdf5_contiguous_hyperslab_handler.f90.html">hdf5_contiguous_hyperslab_handler.f90</a>
      
      <a class="list-group-item" href="../sourcefile/hdf5_dataset_per_process_handler.f90.html">hdf5_dataset_per_process_handler.f90</a>
      
      <a class="list-group-item" href="../sourcefile/hdf5_handler.f90.html">hdf5_handler.f90</a>
      
      <a class="list-group-item" href="../sourcefile/hdf5_structured_contiguous_hyperslab_handler.f90.html">hdf5_structured_contiguous_hyperslab_handler.f90</a>
      
      <a class="list-group-item" href="../sourcefile/hdf5_structured_dataset_per_process_handler.f90.html">hdf5_structured_dataset_per_process_handler.f90</a>
      
      <a class="list-group-item" href="../sourcefile/hdf5_unstructured_contiguous_hyperslab_handler.f90.html">hdf5_unstructured_contiguous_hyperslab_handler.f90</a>
      
      <a class="list-group-item" href="../sourcefile/hdf5_unstructured_dataset_per_process_handler.f90.html">hdf5_unstructured_dataset_per_process_handler.f90</a>
      
      <a class="list-group-item" href="../sourcefile/mpi_environment.f90.html">mpi_environment.f90</a>
      
      <a class="list-group-item" href="../sourcefile/spatial_grid_descriptor.f90.html">spatial_grid_descriptor.f90</a>
      
      <a class="list-group-item" href="../sourcefile/steps_handler.f90.html">steps_handler.f90</a>
      
      <a class="list-group-item" href="../sourcefile/steps_handler_test.f90.html">steps_handler_test.f90</a>
      
      <a class="list-group-item" href="../sourcefile/structured_contiguous_hyperslab_factory.f90.html">structured_contiguous_hyperslab_factory.f90</a>
      
      <a class="list-group-item" href="../sourcefile/structured_dataset_per_process_factory.f90.html">structured_dataset_per_process_factory.f90</a>
      
      <a class="list-group-item" href="../sourcefile/structured_spatial_grid_descriptor.f90.html">structured_spatial_grid_descriptor.f90</a>
      
      <a class="list-group-item" href="../sourcefile/structured_uniform_grid_descriptor.f90.html">structured_uniform_grid_descriptor.f90</a>
      
      <a class="list-group-item" href="../sourcefile/test_fox_wxml.f90.html">test_FoX_wxml.f90</a>
      
      <a class="list-group-item" href="../sourcefile/test_hdf5_rectilinear_contiguous_hyperslabs_handler.f90.html">test_hdf5_rectilinear_contiguous_hyperslabs_handler.f90</a>
      
      <a class="list-group-item" href="../sourcefile/test_hdf5_rectilinear_dataset_per_process_handler.f90.html">test_hdf5_rectilinear_dataset_per_process_handler.f90</a>
      
      <a class="list-group-item" href="../sourcefile/test_hdf5_regular_contiguous_hyperslabs_handler.f90.html">test_hdf5_regular_contiguous_hyperslabs_handler.f90</a>
      
      <a class="list-group-item" href="../sourcefile/test_hdf5_regular_dataset_per_process_handler.f90.html">test_hdf5_regular_dataset_per_process_handler.f90</a>
      
      <a class="list-group-item" href="../sourcefile/test_hdf5_unstructured_contiguous_hyperslabs_handler.f90.html">test_hdf5_unstructured_contiguous_hyperslabs_handler.f90</a>
      
      <a class="list-group-item" href="../sourcefile/test_hdf5_unstructured_dataset_per_process_handler.f90.html">test_hdf5_unstructured_dataset_per_process_handler.f90</a>
      
      <a class="list-group-item" href="../sourcefile/test_mpi_environment.f90.html">test_mpi_environment.f90</a>
      
      <a class="list-group-item" href="../sourcefile/test_xdmf_attribute.f90.html">test_xdmf_attribute.f90</a>
      
      <a class="list-group-item" href="../sourcefile/test_xdmf_character_data.f90.html">test_xdmf_character_data.f90</a>
      
      <a class="list-group-item" href="../sourcefile/test_xdmf_dataitem.f90.html">test_xdmf_dataitem.f90</a>
      
      <a class="list-group-item" href="../sourcefile/test_xdmf_geometry.f90.html">test_xdmf_geometry.f90</a>
      
      <a class="list-group-item" href="../sourcefile/test_xdmf_grid.f90.html">test_xdmf_grid.f90</a>
      
      <a class="list-group-item" href="../sourcefile/test_xdmf_rectilinear_contiguous_hyperslabs_handler.f90.html">test_xdmf_rectilinear_contiguous_hyperslabs_handler.f90</a>
      
      <a class="list-group-item" href="../sourcefile/test_xdmf_rectilinear_dataset_per_process.f90.html">test_xdmf_rectilinear_dataset_per_process.f90</a>
      
      <a class="list-group-item" href="../sourcefile/test_xdmf_regular_contiguous_hyperslabs_handler.f90.html">test_xdmf_regular_contiguous_hyperslabs_handler.f90</a>
      
      <a class="list-group-item" href="../sourcefile/test_xdmf_regular_dataset_per_process.f90.html">test_xdmf_regular_dataset_per_process.f90</a>
      
      <a class="list-group-item" href="../sourcefile/test_xdmf_time.f90.html">test_xdmf_time.f90</a>
      
      <a class="list-group-item" href="../sourcefile/test_xdmf_topology.f90.html">test_xdmf_topology.f90</a>
      
      <a class="list-group-item" href="../sourcefile/test_xdmf_unstructured_contiguous_hyperslabs_handler.f90.html">test_xdmf_unstructured_contiguous_hyperslabs_handler.f90</a>
      
      <a class="list-group-item" href="../sourcefile/test_xdmf_unstructured_dataset_per_process.f90.html">test_xdmf_unstructured_dataset_per_process.f90</a>
      
      <a class="list-group-item" href="../sourcefile/test_xdmf_xinclude.f90.html">test_xdmf_xinclude.f90</a>
      
      <a class="list-group-item" href="../sourcefile/try_compile_hdf5_mod.f90.html">try_compile_hdf5_mod.f90</a>
      
      <a class="list-group-item" href="../sourcefile/try_compile_mpi_mod.f90.html">try_compile_mpi_mod.f90</a>
      
      <a class="list-group-item" href="../sourcefile/uniform_grid_descriptor.f90.html">uniform_grid_descriptor.f90</a>
      
      <a class="list-group-item" href="../sourcefile/unstructured_contiguous_hyperslab_factory.f90.html">unstructured_contiguous_hyperslab_factory.f90</a>
      
      <a class="list-group-item" href="../sourcefile/unstructured_dataset_per_process_factory.f90.html">unstructured_dataset_per_process_factory.f90</a>
      
      <a class="list-group-item" href="../sourcefile/unstructured_spatial_grid_descriptor.f90.html">unstructured_spatial_grid_descriptor.f90</a>
      
      <a class="list-group-item" href="../sourcefile/unstructured_uniform_grid_descriptor.f90.html">unstructured_uniform_grid_descriptor.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xdmf_attribute.f90.html">xdmf_attribute.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xdmf_character_data.f90.html">xdmf_character_data.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xdmf_contiguous_hyperslab_handler.f90.html">xdmf_contiguous_hyperslab_handler.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xdmf_dataitem.f90.html">xdmf_dataitem.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xdmf_dataset_per_process_handler.f90.html">xdmf_dataset_per_process_handler.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xdmf_domain.f90.html">xdmf_domain.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xdmf_element.f90.html">xdmf_element.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xdmf_file.f90.html">xdmf_file.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xdmf_geometry.f90.html">xdmf_geometry.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xdmf_grid.f90.html">xdmf_grid.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xdmf_handler.f90.html">xdmf_handler.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xdmf_information.f90.html">xdmf_information.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xdmf_parameters.f90.html">xdmf_parameters.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xdmf_structured_contiguous_hyperslab_handler.f90.html">xdmf_structured_contiguous_hyperslab_handler.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xdmf_structured_dataset_per_process_handler.f90.html">xdmf_structured_dataset_per_process_handler.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xdmf_time.f90.html">xdmf_time.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xdmf_topology.f90.html">xdmf_topology.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xdmf_unstructured_contiguous_hyperslab_handler.f90.html">xdmf_unstructured_contiguous_hyperslab_handler.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xdmf_unstructured_dataset_per_process_handler.f90.html">xdmf_unstructured_dataset_per_process_handler.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xdmf_utils.f90.html">xdmf_utils.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xdmf_xinclude.f90.html">xdmf_xinclude.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for.f90.html">xh5for.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_abstract_factory.f90.html">xh5for_abstract_factory.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_ch_rectilinear_grid.f90.html">xh5for_ch_rectilinear_grid.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_ch_rectilinear_non_static_grid_series.f90.html">xh5for_ch_rectilinear_non_static_grid_series.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_ch_rectilinear_static_grid_series.f90.html">xh5for_ch_rectilinear_static_grid_series.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_ch_regular_grid.f90.html">xh5for_ch_regular_grid.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_ch_regular_non_static_grid_series.f90.html">xh5for_ch_regular_non_static_grid_series.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_ch_regular_static_grid_series.f90.html">xh5for_ch_regular_static_grid_series.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_ch_unstructured_hexahedron.f90.html">xh5for_ch_unstructured_hexahedron.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_ch_unstructured_hexahedron_perf.f90.html">xh5for_ch_unstructured_hexahedron_perf.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_ch_unstructured_mixedtopology.f90.html">xh5for_ch_unstructured_mixedtopology.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_ch_unstructured_non_static_tetrahedron.f90.html">xh5for_ch_unstructured_non_static_tetrahedron.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_ch_unstructured_quadilateral.f90.html">xh5for_ch_unstructured_quadilateral.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_ch_unstructured_static_mixed_series.f90.html">xh5for_ch_unstructured_static_mixed_series.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_ch_unstructured_static_tetrahedron.f90.html">xh5for_ch_unstructured_static_tetrahedron.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_ch_unstructured_tetrahedron.f90.html">xh5for_ch_unstructured_tetrahedron.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_ch_unstructured_triangles.f90.html">xh5for_ch_unstructured_triangles.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_dpp_rectilinear_grid.f90.html">xh5for_dpp_rectilinear_grid.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_dpp_rectilinear_non_static_grid_series.f90.html">xh5for_dpp_rectilinear_non_static_grid_series.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_dpp_rectilinear_static_grid_series.f90.html">xh5for_dpp_rectilinear_static_grid_series.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_dpp_regular_grid.f90.html">xh5for_dpp_regular_grid.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_dpp_regular_non_static_grid_series.f90.html">xh5for_dpp_regular_non_static_grid_series.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_dpp_regular_static_grid_series.f90.html">xh5for_dpp_regular_static_grid_series.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_dpp_unstructured_hexahedron.f90.html">xh5for_dpp_unstructured_hexahedron.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_dpp_unstructured_mixedtopology.f90.html">xh5for_dpp_unstructured_mixedtopology.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_dpp_unstructured_non_static_tetrahedron.f90.html">xh5for_dpp_unstructured_non_static_tetrahedron.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_dpp_unstructured_quadilateral.f90.html">xh5for_dpp_unstructured_quadilateral.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_dpp_unstructured_static_tetrahedron.f90.html">xh5for_dpp_unstructured_static_tetrahedron.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_dpp_unstructured_tetrahedron.f90.html">xh5for_dpp_unstructured_tetrahedron.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_dpp_unstructured_triangles.f90.html">xh5for_dpp_unstructured_triangles.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_factory.f90.html">xh5for_factory.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_handler.f90.html">xh5for_handler.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_metadata.f90.html">xh5for_metadata.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_parameters.f90.html">xh5for_parameters.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_utils.f90.html">xh5for_utils.f90</a>
      
    </div>
  </div>
</div>


</div>  

    </div>
    <div class="col-md-9" id='text'>
    
    
    <h3>This File Depends On</h3>
    
                <div class="depgraph"><?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.38.0 (20140413.2041)
 -->
<!-- Title: sourcefile~~hdf5_dataset_per_process_handler.f90~~EfferentGraph Pages: 1 -->
<svg id="sourcefilehdf5_dataset_per_process_handlerf90EfferentGraph" width="641pt" height="134pt"
 viewBox="0.00 0.00 641.00 133.90" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~EfferentGraph" class="graph" transform="scale(0.557876 0.557876) rotate(0) translate(4 236.016)">
<title>sourcefile~~hdf5_dataset_per_process_handler.f90~~EfferentGraph</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-236.016 1145,-236.016 1145,4 -4,4"/>
<!-- sourcefile~hdf5_dataset_per_process_handler.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~EfferentGraph_node1" class="node"><title>sourcefile~hdf5_dataset_per_process_handler.f90</title>
<polygon fill="none" stroke="black" points="1141,-35.873 941,-35.873 941,-11.873 1141,-11.873 1141,-35.873"/>
<text text-anchor="middle" x="1041" y="-21.473" font-family="Helvetica,sans-Serif" font-size="10.50">hdf5_dataset_per_process_handler.f90</text>
</g>
<!-- sourcefile~xh5for_utils.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~EfferentGraph_node2" class="node"><title>sourcefile~xh5for_utils.f90</title>
<g id="a_sourcefile~~hdf5_dataset_per_process_handler.f90~~EfferentGraph_node2"><a xlink:href="../sourcefile/xh5for_utils.f90.html" xlink:title="xh5for_utils.f90">
<polygon fill="#f0ad4e" stroke="#f0ad4e" points="406.5,-154.873 321.5,-154.873 321.5,-130.873 406.5,-130.873 406.5,-154.873"/>
<text text-anchor="middle" x="364" y="-140.473" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">xh5for_utils.f90</text>
</a>
</g>
</g>
<!-- sourcefile~xh5for_utils.f90&#45;&gt;sourcefile~hdf5_dataset_per_process_handler.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~EfferentGraph_edge20" class="edge"><title>sourcefile~xh5for_utils.f90&#45;&gt;sourcefile~hdf5_dataset_per_process_handler.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M379.98,-155.03C397.157,-168.15 426.73,-188.315 456,-196.873 627.181,-246.921 689.842,-244.05 857,-181.873"/>
</g>
<!-- sourcefile~mpi_environment.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~EfferentGraph_node3" class="node"><title>sourcefile~mpi_environment.f90</title>
<g id="a_sourcefile~~hdf5_dataset_per_process_handler.f90~~EfferentGraph_node3"><a xlink:href="../sourcefile/mpi_environment.f90.html" xlink:title="mpi_environment.f90">
<polygon fill="#f0ad4e" stroke="#f0ad4e" points="584.5,-154.873 471.5,-154.873 471.5,-130.873 584.5,-130.873 584.5,-154.873"/>
<text text-anchor="middle" x="528" y="-140.473" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">mpi_environment.f90</text>
</a>
</g>
</g>
<!-- sourcefile~xh5for_utils.f90&#45;&gt;sourcefile~mpi_environment.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~EfferentGraph_edge4" class="edge"><title>sourcefile~xh5for_utils.f90&#45;&gt;sourcefile~mpi_environment.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M406.719,-142.873C423.33,-142.873 442.849,-142.873 461.275,-142.873"/>
<polygon fill="#000000" stroke="#000000" points="461.373,-146.373 471.373,-142.873 461.373,-139.373 461.373,-146.373"/>
</g>
<!-- sourcefile~uniform_grid_descriptor.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~EfferentGraph_node11" class="node"><title>sourcefile~uniform_grid_descriptor.f90</title>
<g id="a_sourcefile~~hdf5_dataset_per_process_handler.f90~~EfferentGraph_node11"><a xlink:href="../sourcefile/uniform_grid_descriptor.f90.html" xlink:title="uniform_grid_descriptor.f90">
<polygon fill="#f0ad4e" stroke="#f0ad4e" points="600,-112.873 456,-112.873 456,-88.873 600,-88.873 600,-112.873"/>
<text text-anchor="middle" x="528" y="-98.473" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">uniform_grid_descriptor.f90</text>
</a>
</g>
</g>
<!-- sourcefile~xh5for_utils.f90&#45;&gt;sourcefile~uniform_grid_descriptor.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~EfferentGraph_edge12" class="edge"><title>sourcefile~xh5for_utils.f90&#45;&gt;sourcefile~uniform_grid_descriptor.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M406.719,-132.057C426.224,-127 449.738,-120.904 470.782,-115.448"/>
<polygon fill="#000000" stroke="#000000" points="471.767,-118.808 480.569,-112.911 470.01,-112.032 471.767,-118.808"/>
</g>
<!-- sourcefile~mpi_environment.f90&#45;&gt;sourcefile~hdf5_dataset_per_process_handler.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~EfferentGraph_edge21" class="edge"><title>sourcefile~mpi_environment.f90&#45;&gt;sourcefile~hdf5_dataset_per_process_handler.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M706.5,-141.873C715.081,-140.769 848.891,-184.889 857,-181.873"/>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M859,-181.873C933.244,-154.257 996.94,-80.666 1024.88,-44.5076"/>
<polygon fill="#000000" stroke="#000000" points="1027.95,-46.2557 1031.2,-36.172 1022.37,-42.0273 1027.95,-46.2557"/>
</g>
<!-- sourcefile~spatial_grid_descriptor.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~EfferentGraph_node4" class="node"><title>sourcefile~spatial_grid_descriptor.f90</title>
<g id="a_sourcefile~~hdf5_dataset_per_process_handler.f90~~EfferentGraph_node4"><a xlink:href="../sourcefile/spatial_grid_descriptor.f90.html" xlink:title="spatial_grid_descriptor.f90">
<polygon fill="#f0ad4e" stroke="#f0ad4e" points="775,-193.873 636,-193.873 636,-169.873 775,-169.873 775,-193.873"/>
<text text-anchor="middle" x="705.5" y="-179.473" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">spatial_grid_descriptor.f90</text>
</a>
</g>
</g>
<!-- sourcefile~mpi_environment.f90&#45;&gt;sourcefile~spatial_grid_descriptor.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~EfferentGraph_edge6" class="edge"><title>sourcefile~mpi_environment.f90&#45;&gt;sourcefile~spatial_grid_descriptor.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M583.088,-154.893C601.187,-158.914 621.537,-163.437 640.33,-167.613"/>
<polygon fill="#000000" stroke="#000000" points="639.768,-171.073 650.289,-169.826 641.286,-164.24 639.768,-171.073"/>
</g>
<!-- sourcefile~hdf5_handler.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~EfferentGraph_node5" class="node"><title>sourcefile~hdf5_handler.f90</title>
<g id="a_sourcefile~~hdf5_dataset_per_process_handler.f90~~EfferentGraph_node5"><a xlink:href="../sourcefile/hdf5_handler.f90.html" xlink:title="hdf5_handler.f90">
<polygon fill="#f0ad4e" stroke="#f0ad4e" points="905,-35.873 811,-35.873 811,-11.873 905,-11.873 905,-35.873"/>
<text text-anchor="middle" x="858" y="-21.473" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">hdf5_handler.f90</text>
</a>
</g>
</g>
<!-- sourcefile~mpi_environment.f90&#45;&gt;sourcefile~hdf5_handler.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~EfferentGraph_edge15" class="edge"><title>sourcefile~mpi_environment.f90&#45;&gt;sourcefile~hdf5_handler.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M584.561,-146.01C619.196,-147.113 664.61,-147.007 704.5,-141.873"/>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M706.5,-141.873C737.835,-137.84 748.483,-140.05 775,-122.873 805.977,-102.807 831.151,-67.3525 845.093,-44.7649"/>
<polygon fill="#000000" stroke="#000000" points="848.233,-46.3329 850.365,-35.9546 842.227,-42.7388 848.233,-46.3329"/>
</g>
<!-- sourcefile~steps_handler.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~EfferentGraph_node10" class="node"><title>sourcefile~steps_handler.f90</title>
<g id="a_sourcefile~~hdf5_dataset_per_process_handler.f90~~EfferentGraph_node10"><a xlink:href="../sourcefile/steps_handler.f90.html" xlink:title="steps_handler.f90">
<polygon fill="#f0ad4e" stroke="#f0ad4e" points="754.5,-113.873 656.5,-113.873 656.5,-89.873 754.5,-89.873 754.5,-113.873"/>
<text text-anchor="middle" x="705.5" y="-99.473" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">steps_handler.f90</text>
</a>
</g>
</g>
<!-- sourcefile~mpi_environment.f90&#45;&gt;sourcefile~steps_handler.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~EfferentGraph_edge10" class="edge"><title>sourcefile~mpi_environment.f90&#45;&gt;sourcefile~steps_handler.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M580.707,-130.793C601.393,-125.961 625.315,-120.372 646.583,-115.404"/>
<polygon fill="#000000" stroke="#000000" points="647.523,-118.778 656.464,-113.095 645.93,-111.962 647.523,-118.778"/>
</g>
<!-- sourcefile~spatial_grid_descriptor.f90&#45;&gt;sourcefile~hdf5_dataset_per_process_handler.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~EfferentGraph_edge22" class="edge"><title>sourcefile~spatial_grid_descriptor.f90&#45;&gt;sourcefile~hdf5_dataset_per_process_handler.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M775.352,-191.874C801.633,-193.14 831.409,-191.392 857,-181.873"/>
</g>
<!-- sourcefile~spatial_grid_descriptor.f90&#45;&gt;sourcefile~hdf5_handler.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~EfferentGraph_edge16" class="edge"><title>sourcefile~spatial_grid_descriptor.f90&#45;&gt;sourcefile~hdf5_handler.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M751.193,-169.757C759.654,-166.17 768.028,-161.614 775,-155.873 811.727,-125.632 836.765,-74.4191 848.791,-45.4764"/>
<polygon fill="#000000" stroke="#000000" points="852.157,-46.4852 852.63,-35.901 845.66,-43.8801 852.157,-46.4852"/>
</g>
<!-- sourcefile~hdf5_handler.f90&#45;&gt;sourcefile~hdf5_dataset_per_process_handler.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~EfferentGraph_edge23" class="edge"><title>sourcefile~hdf5_handler.f90&#45;&gt;sourcefile~hdf5_dataset_per_process_handler.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M905.142,-23.873C913.133,-23.873 921.736,-23.873 930.592,-23.873"/>
<polygon fill="#000000" stroke="#000000" points="930.679,-27.3731 940.679,-23.873 930.679,-20.3731 930.679,-27.3731"/>
</g>
<!-- sourcefile~xh5for_parameters.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~EfferentGraph_node6" class="node"><title>sourcefile~xh5for_parameters.f90</title>
<g id="a_sourcefile~~hdf5_dataset_per_process_handler.f90~~EfferentGraph_node6"><a xlink:href="../sourcefile/xh5for_parameters.f90.html" xlink:title="xh5for_parameters.f90">
<polygon fill="#f0ad4e" stroke="#f0ad4e" points="272,-132.873 151,-132.873 151,-108.873 272,-108.873 272,-132.873"/>
<text text-anchor="middle" x="211.5" y="-118.473" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">xh5for_parameters.f90</text>
</a>
</g>
</g>
<!-- sourcefile~xh5for_parameters.f90&#45;&gt;sourcefile~hdf5_dataset_per_process_handler.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~EfferentGraph_edge24" class="edge"><title>sourcefile~xh5for_parameters.f90&#45;&gt;sourcefile~hdf5_dataset_per_process_handler.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M233.019,-108.79C261.172,-93.1435 313.891,-67.1308 363,-60.873"/>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M365,-60.873C436.422,-51.7718 455.001,-60.4674 527,-60.873"/>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M529,-60.873C568.857,-61.0975 665.204,-30.5358 704.5,-23.873"/>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M706.5,-23.873C753.206,-15.9538 763.86,-7.56269 811,-2.87299 852.573,1.26282 863.347,0.34736 905,-2.87299 924.836,-4.4066 946.167,-7.1897 965.883,-10.2389"/>
<polygon fill="#000000" stroke="#000000" points="965.604,-13.7384 976.03,-11.8524 966.703,-6.82525 965.604,-13.7384"/>
</g>
<!-- sourcefile~xh5for_parameters.f90&#45;&gt;sourcefile~xh5for_utils.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~EfferentGraph_edge2" class="edge"><title>sourcefile~xh5for_parameters.f90&#45;&gt;sourcefile~xh5for_utils.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M272.414,-129.631C285.222,-131.503 298.649,-133.466 311.125,-135.29"/>
<polygon fill="#000000" stroke="#000000" points="310.945,-138.801 321.346,-136.784 311.957,-131.874 310.945,-138.801"/>
</g>
<!-- sourcefile~xh5for_parameters.f90&#45;&gt;sourcefile~spatial_grid_descriptor.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~EfferentGraph_edge7" class="edge"><title>sourcefile~xh5for_parameters.f90&#45;&gt;sourcefile~spatial_grid_descriptor.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M231.497,-132.952C259.143,-149.515 312.671,-177.809 363,-182.873"/>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M365,-182.873C436.638,-190.081 455.515,-174.277 527,-182.873"/>
</g>
<!-- sourcefile~xh5for_parameters.f90&#45;&gt;sourcefile~hdf5_handler.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~EfferentGraph_edge19" class="edge"><title>sourcefile~xh5for_parameters.f90&#45;&gt;sourcefile~hdf5_handler.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M706.5,-23.873C737.359,-18.6408 772.291,-18.3052 800.728,-19.4293"/>
<polygon fill="#000000" stroke="#000000" points="800.739,-22.9335 810.891,-19.9031 801.065,-15.9411 800.739,-22.9335"/>
</g>
<!-- sourcefile~xh5for_metadata.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~EfferentGraph_node9" class="node"><title>sourcefile~xh5for_metadata.f90</title>
<g id="a_sourcefile~~hdf5_dataset_per_process_handler.f90~~EfferentGraph_node9"><a xlink:href="../sourcefile/xh5for_metadata.f90.html" xlink:title="xh5for_metadata.f90">
<polygon fill="#f0ad4e" stroke="#f0ad4e" points="420,-112.873 308,-112.873 308,-88.873 420,-88.873 420,-112.873"/>
<text text-anchor="middle" x="364" y="-98.473" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">xh5for_metadata.f90</text>
</a>
</g>
</g>
<!-- sourcefile~xh5for_parameters.f90&#45;&gt;sourcefile~xh5for_metadata.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~EfferentGraph_edge5" class="edge"><title>sourcefile~xh5for_parameters.f90&#45;&gt;sourcefile~xh5for_metadata.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M272.414,-112.911C280.689,-111.811 289.223,-110.677 297.592,-109.565"/>
<polygon fill="#000000" stroke="#000000" points="298.237,-113.01 307.689,-108.223 297.315,-106.071 298.237,-113.01"/>
</g>
<!-- sourcefile~xh5for_parameters.f90&#45;&gt;sourcefile~steps_handler.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~EfferentGraph_edge11" class="edge"><title>sourcefile~xh5for_parameters.f90&#45;&gt;sourcefile~steps_handler.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M529,-60.873C575.561,-61.1353 627.292,-74.9465 662.45,-86.4663"/>
<polygon fill="#000000" stroke="#000000" points="661.762,-89.9275 672.356,-89.7955 663.992,-83.2921 661.762,-89.9275"/>
</g>
<!-- sourcefile~xh5for_parameters.f90&#45;&gt;sourcefile~uniform_grid_descriptor.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~EfferentGraph_edge14" class="edge"><title>sourcefile~xh5for_parameters.f90&#45;&gt;sourcefile~uniform_grid_descriptor.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M365,-60.873C387.253,-58.0373 441.873,-73.2727 481.553,-85.7518"/>
<polygon fill="#000000" stroke="#000000" points="480.699,-89.1532 491.29,-88.8524 482.823,-82.4832 480.699,-89.1532"/>
</g>
<!-- sourcefile~xdmf_utils.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~EfferentGraph_node7" class="node"><title>sourcefile~xdmf_utils.f90</title>
<g id="a_sourcefile~~hdf5_dataset_per_process_handler.f90~~EfferentGraph_node7"><a xlink:href="../sourcefile/xdmf_utils.f90.html" xlink:title="xdmf_utils.f90">
<polygon fill="#f0ad4e" stroke="#f0ad4e" points="251,-194.873 172,-194.873 172,-170.873 251,-170.873 251,-194.873"/>
<text text-anchor="middle" x="211.5" y="-180.473" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">xdmf_utils.f90</text>
</a>
</g>
</g>
<!-- sourcefile~xdmf_utils.f90&#45;&gt;sourcefile~xh5for_utils.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~EfferentGraph_edge3" class="edge"><title>sourcefile~xdmf_utils.f90&#45;&gt;sourcefile~xh5for_utils.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M251.257,-172.572C269.661,-167.681 291.906,-161.769 311.687,-156.511"/>
<polygon fill="#000000" stroke="#000000" points="312.707,-159.862 321.472,-153.91 310.909,-153.096 312.707,-159.862"/>
</g>
<!-- sourcefile~xdmf_utils.f90&#45;&gt;sourcefile~spatial_grid_descriptor.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~EfferentGraph_edge8" class="edge"><title>sourcefile~xdmf_utils.f90&#45;&gt;sourcefile~spatial_grid_descriptor.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M251.272,-180.746C281.729,-179.588 325.174,-179.067 363,-182.873"/>
</g>
<!-- sourcefile~xdmf_parameters.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~EfferentGraph_node8" class="node"><title>sourcefile~xdmf_parameters.f90</title>
<g id="a_sourcefile~~hdf5_dataset_per_process_handler.f90~~EfferentGraph_node8"><a xlink:href="../sourcefile/xdmf_parameters.f90.html" xlink:title="xdmf_parameters.f90">
<polygon fill="#f0ad4e" stroke="#f0ad4e" points="115,-194.873 7.10543e-15,-194.873 7.10543e-15,-170.873 115,-170.873 115,-194.873"/>
<text text-anchor="middle" x="57.5" y="-180.473" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">xdmf_parameters.f90</text>
</a>
</g>
</g>
<!-- sourcefile~xdmf_parameters.f90&#45;&gt;sourcefile~xdmf_utils.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~EfferentGraph_edge1" class="edge"><title>sourcefile~xdmf_parameters.f90&#45;&gt;sourcefile~xdmf_utils.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M115.099,-182.873C130.461,-182.873 146.956,-182.873 161.838,-182.873"/>
<polygon fill="#000000" stroke="#000000" points="161.849,-186.373 171.849,-182.873 161.849,-179.373 161.849,-186.373"/>
</g>
<!-- sourcefile~xh5for_metadata.f90&#45;&gt;sourcefile~spatial_grid_descriptor.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~EfferentGraph_edge9" class="edge"><title>sourcefile~xh5for_metadata.f90&#45;&gt;sourcefile~spatial_grid_descriptor.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M403.823,-112.873C409.49,-115.414 415.069,-118.401 420,-121.873 440.103,-136.027 435.194,-150.776 456,-163.873 483.645,-181.275 494.568,-178.973 527,-182.873"/>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M529,-182.873C560.528,-186.664 595.471,-187.203 625.825,-186.509"/>
<polygon fill="#000000" stroke="#000000" points="626.032,-190.004 635.931,-186.229 625.838,-183.007 626.032,-190.004"/>
</g>
<!-- sourcefile~xh5for_metadata.f90&#45;&gt;sourcefile~uniform_grid_descriptor.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~EfferentGraph_edge13" class="edge"><title>sourcefile~xh5for_metadata.f90&#45;&gt;sourcefile~uniform_grid_descriptor.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M420.298,-100.873C428.533,-100.873 437.164,-100.873 445.797,-100.873"/>
<polygon fill="#000000" stroke="#000000" points="445.91,-104.373 455.91,-100.873 445.91,-97.3731 445.91,-104.373"/>
</g>
<!-- sourcefile~steps_handler.f90&#45;&gt;sourcefile~hdf5_handler.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~EfferentGraph_edge17" class="edge"><title>sourcefile~steps_handler.f90&#45;&gt;sourcefile~hdf5_handler.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M742.286,-89.8487C753,-85.8355 764.648,-81.0529 775,-75.873 794.785,-65.9728 815.836,-52.5566 831.654,-41.8316"/>
<polygon fill="#000000" stroke="#000000" points="834.059,-44.4257 840.314,-35.8747 830.091,-38.6584 834.059,-44.4257"/>
</g>
<!-- sourcefile~uniform_grid_descriptor.f90&#45;&gt;sourcefile~hdf5_handler.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~EfferentGraph_edge18" class="edge"><title>sourcefile~uniform_grid_descriptor.f90&#45;&gt;sourcefile~hdf5_handler.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M580.25,-88.8417C640.157,-74.7783 738.966,-51.5821 800.889,-37.0454"/>
<polygon fill="#000000" stroke="#000000" points="801.939,-40.3941 810.875,-34.7012 800.339,-33.5793 801.939,-40.3941"/>
</g>
</g>
</svg>
</div>
                <script>var pansourcefilehdf5_dataset_per_process_handlerf90EfferentGraph = svgPanZoom('#sourcefilehdf5_dataset_per_process_handlerf90EfferentGraph', {
                    zoomEnabled: true,
                    controlIconsEnabled: true,
                    fit: true,
                    center: true,});
                    </script>
                <div><a type="button" class="graph-help" data-toggle="modal" href="#graph-help-text">Help</a></div>
                <div class="modal fade" id="graph-help-text" tabindex="-1" role="dialog">
                  <div class="modal-dialog modal-lg" role="document">
                    <div class="modal-content">
                      <div class="modal-header">
                        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                        <h4 class="modal-title" id="-graph-help-label">Graph Key</h4>
                      </div>
                      <div class="modal-body">
                        
    <p>Nodes of different colours represent the following: </p>
    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.38.0 (20140413.2041)
 -->
<!-- Title: Graph Key Pages: 1 -->
<svg width="190pt" height="32pt"
 viewBox="0.00 0.00 190.00 32.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 28)">
<title>Graph Key</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-28 186,-28 186,4 -4,4"/>
<!-- Source File -->
<g id="node1" class="node"><title>Source File</title>
<polygon fill="#f0ad4e" stroke="#f0ad4e" points="67,-24 0,-24 0,-0 67,-0 67,-24"/>
<text text-anchor="middle" x="33.5" y="-9.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">Source File</text>
</g>
<!-- This Page&#39;s Entity -->
<g id="node2" class="node"><title>This Page&#39;s Entity</title>
<polygon fill="none" stroke="black" points="182,-24 85,-24 85,-0 182,-0 182,-24"/>
<text text-anchor="middle" x="133.5" y="-9.6" font-family="Helvetica,sans-Serif" font-size="10.50">This Page&#39;s Entity</text>
</g>
</g>
</svg>

    
    <p>Solid arrows point from a file to a file which depends upon it. A file 
    is dependent upon another if the latter must be compiled before the former
    can be.
    </p>
    
                      </div>
                    </div>
                  </div>
                </div>
                
    
      
      <h3>Files Dependent On This One</h3>
      
                <div class="depgraph"><?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.38.0 (20140413.2041)
 -->
<!-- Title: sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph Pages: 1 -->
<svg id="sourcefilehdf5_dataset_per_process_handlerf90AfferentGraph" width="641pt" height="495pt"
 viewBox="0.00 0.00 641.00 495.30" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph" class="graph" transform="scale(0.424785 0.424785) rotate(0) translate(4 1162)">
<title>sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-1162 1505,-1162 1505,4 -4,4"/>
<!-- sourcefile~hdf5_dataset_per_process_handler.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node1" class="node"><title>sourcefile~hdf5_dataset_per_process_handler.f90</title>
<polygon fill="none" stroke="black" points="200,-580 0,-580 0,-556 200,-556 200,-580"/>
<text text-anchor="middle" x="100" y="-565.6" font-family="Helvetica,sans-Serif" font-size="10.50">hdf5_dataset_per_process_handler.f90</text>
</g>
<!-- sourcefile~hdf5_structured_dataset_per_process_handler.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node2" class="node"><title>sourcefile~hdf5_structured_dataset_per_process_handler.f90</title>
<g id="a_sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node2"><a xlink:href="../sourcefile/hdf5_structured_dataset_per_process_handler.f90.html" xlink:title="hdf5_structured_dataset_per_process_handler.f90">
<polygon fill="#f0ad4e" stroke="#f0ad4e" points="496,-612 242,-612 242,-588 496,-588 496,-612"/>
<text text-anchor="middle" x="369" y="-597.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">hdf5_structured_dataset_per_process_handler.f90</text>
</a>
</g>
</g>
<!-- sourcefile~hdf5_dataset_per_process_handler.f90&#45;&gt;sourcefile~hdf5_structured_dataset_per_process_handler.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_edge38" class="edge"><title>sourcefile~hdf5_dataset_per_process_handler.f90&#45;&gt;sourcefile~hdf5_structured_dataset_per_process_handler.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M200.042,-579.87C218.872,-582.127 238.685,-584.502 257.836,-586.797"/>
<polygon fill="#000000" stroke="#000000" points="257.436,-590.274 267.782,-587.989 258.269,-583.324 257.436,-590.274"/>
</g>
<!-- sourcefile~hdf5_unstructured_dataset_per_process_handler.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node3" class="node"><title>sourcefile~hdf5_unstructured_dataset_per_process_handler.f90</title>
<g id="a_sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node3"><a xlink:href="../sourcefile/hdf5_unstructured_dataset_per_process_handler.f90.html" xlink:title="hdf5_unstructured_dataset_per_process_handler.f90">
<polygon fill="#f0ad4e" stroke="#f0ad4e" points="502,-549 236,-549 236,-525 502,-525 502,-549"/>
<text text-anchor="middle" x="369" y="-534.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">hdf5_unstructured_dataset_per_process_handler.f90</text>
</a>
</g>
</g>
<!-- sourcefile~hdf5_dataset_per_process_handler.f90&#45;&gt;sourcefile~hdf5_unstructured_dataset_per_process_handler.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_edge39" class="edge"><title>sourcefile~hdf5_dataset_per_process_handler.f90&#45;&gt;sourcefile~hdf5_unstructured_dataset_per_process_handler.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M200.042,-556.501C217.698,-554.451 236.217,-552.301 254.245,-550.208"/>
<polygon fill="#000000" stroke="#000000" points="254.672,-553.682 264.201,-549.052 253.864,-546.728 254.672,-553.682"/>
</g>
<!-- sourcefile~test_hdf5_rectilinear_dataset_per_process_handler.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node4" class="node"><title>sourcefile~test_hdf5_rectilinear_dataset_per_process_handler.f90</title>
<g id="a_sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node4"><a xlink:href="../sourcefile/test_hdf5_rectilinear_dataset_per_process_handler.f90.html" xlink:title="test_hdf5_rectilinear_dataset_per_process_handler.f90">
<polygon fill="#f0ad4e" stroke="#f0ad4e" points="820.5,-675 544.5,-675 544.5,-651 820.5,-651 820.5,-675"/>
<text text-anchor="middle" x="682.5" y="-660.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">test_hdf5_rectilinear_dataset_per_process_handler.f90</text>
</a>
</g>
</g>
<!-- sourcefile~hdf5_structured_dataset_per_process_handler.f90&#45;&gt;sourcefile~test_hdf5_rectilinear_dataset_per_process_handler.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_edge32" class="edge"><title>sourcefile~hdf5_structured_dataset_per_process_handler.f90&#45;&gt;sourcefile~test_hdf5_rectilinear_dataset_per_process_handler.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M413.244,-612.073C447.017,-621.195 495.234,-633.547 538,-642 551.417,-644.652 565.6,-647.124 579.62,-649.373"/>
<polygon fill="#000000" stroke="#000000" points="579.366,-652.876 589.788,-650.97 580.452,-645.96 579.366,-652.876"/>
</g>
<!-- sourcefile~structured_dataset_per_process_factory.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node5" class="node"><title>sourcefile~structured_dataset_per_process_factory.f90</title>
<g id="a_sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node5"><a xlink:href="../sourcefile/structured_dataset_per_process_factory.f90.html" xlink:title="structured_dataset_per_process_factory.f90">
<polygon fill="#f0ad4e" stroke="#f0ad4e" points="794,-633 571,-633 571,-609 794,-609 794,-633"/>
<text text-anchor="middle" x="682.5" y="-618.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">structured_dataset_per_process_factory.f90</text>
</a>
</g>
</g>
<!-- sourcefile~hdf5_structured_dataset_per_process_handler.f90&#45;&gt;sourcefile~structured_dataset_per_process_factory.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_edge33" class="edge"><title>sourcefile~hdf5_structured_dataset_per_process_handler.f90&#45;&gt;sourcefile~structured_dataset_per_process_factory.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M496.25,-608.511C517.41,-609.938 539.324,-611.415 560.351,-612.833"/>
<polygon fill="#000000" stroke="#000000" points="560.383,-616.343 570.596,-613.523 560.854,-609.359 560.383,-616.343"/>
</g>
<!-- sourcefile~test_hdf5_regular_dataset_per_process_handler.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node6" class="node"><title>sourcefile~test_hdf5_regular_dataset_per_process_handler.f90</title>
<g id="a_sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node6"><a xlink:href="../sourcefile/test_hdf5_regular_dataset_per_process_handler.f90.html" xlink:title="test_hdf5_regular_dataset_per_process_handler.f90">
<polygon fill="#f0ad4e" stroke="#f0ad4e" points="814,-591 551,-591 551,-567 814,-567 814,-591"/>
<text text-anchor="middle" x="682.5" y="-576.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">test_hdf5_regular_dataset_per_process_handler.f90</text>
</a>
</g>
</g>
<!-- sourcefile~hdf5_structured_dataset_per_process_handler.f90&#45;&gt;sourcefile~test_hdf5_regular_dataset_per_process_handler.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_edge34" class="edge"><title>sourcefile~hdf5_structured_dataset_per_process_handler.f90&#45;&gt;sourcefile~test_hdf5_regular_dataset_per_process_handler.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M496.25,-591.489C510.843,-590.505 525.795,-589.497 540.567,-588.501"/>
<polygon fill="#000000" stroke="#000000" points="541.017,-591.979 550.759,-587.814 540.546,-584.995 541.017,-591.979"/>
</g>
<!-- sourcefile~unstructured_dataset_per_process_factory.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node38" class="node"><title>sourcefile~unstructured_dataset_per_process_factory.f90</title>
<g id="a_sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node38"><a xlink:href="../sourcefile/unstructured_dataset_per_process_factory.f90.html" xlink:title="unstructured_dataset_per_process_factory.f90">
<polygon fill="#f0ad4e" stroke="#f0ad4e" points="800,-549 565,-549 565,-525 800,-525 800,-549"/>
<text text-anchor="middle" x="682.5" y="-534.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">unstructured_dataset_per_process_factory.f90</text>
</a>
</g>
</g>
<!-- sourcefile~hdf5_unstructured_dataset_per_process_handler.f90&#45;&gt;sourcefile~unstructured_dataset_per_process_factory.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_edge36" class="edge"><title>sourcefile~hdf5_unstructured_dataset_per_process_handler.f90&#45;&gt;sourcefile~unstructured_dataset_per_process_factory.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M502.104,-537C519.569,-537 537.441,-537 554.812,-537"/>
<polygon fill="#000000" stroke="#000000" points="554.976,-540.5 564.976,-537 554.976,-533.5 554.976,-540.5"/>
</g>
<!-- sourcefile~test_hdf5_unstructured_dataset_per_process_handler.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node39" class="node"><title>sourcefile~test_hdf5_unstructured_dataset_per_process_handler.f90</title>
<g id="a_sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node39"><a xlink:href="../sourcefile/test_hdf5_unstructured_dataset_per_process_handler.f90.html" xlink:title="test_hdf5_unstructured_dataset_per_process_handler.f90">
<polygon fill="#f0ad4e" stroke="#f0ad4e" points="827,-507 538,-507 538,-483 827,-483 827,-507"/>
<text text-anchor="middle" x="682.5" y="-492.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">test_hdf5_unstructured_dataset_per_process_handler.f90</text>
</a>
</g>
</g>
<!-- sourcefile~hdf5_unstructured_dataset_per_process_handler.f90&#45;&gt;sourcefile~test_hdf5_unstructured_dataset_per_process_handler.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_edge37" class="edge"><title>sourcefile~hdf5_unstructured_dataset_per_process_handler.f90&#45;&gt;sourcefile~test_hdf5_unstructured_dataset_per_process_handler.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M459.263,-524.964C497.797,-519.769 543.014,-513.672 582.567,-508.339"/>
<polygon fill="#000000" stroke="#000000" points="583.051,-511.806 592.493,-507.001 582.115,-504.869 583.051,-511.806"/>
</g>
<!-- sourcefile~xh5for_factory.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node7" class="node"><title>sourcefile~xh5for_factory.f90</title>
<g id="a_sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node7"><a xlink:href="../sourcefile/xh5for_factory.f90.html" xlink:title="xh5for_factory.f90">
<polygon fill="#f0ad4e" stroke="#f0ad4e" points="962,-591 863,-591 863,-567 962,-567 962,-591"/>
<text text-anchor="middle" x="912.5" y="-576.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">xh5for_factory.f90</text>
</a>
</g>
</g>
<!-- sourcefile~structured_dataset_per_process_factory.f90&#45;&gt;sourcefile~xh5for_factory.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_edge31" class="edge"><title>sourcefile~structured_dataset_per_process_factory.f90&#45;&gt;sourcefile~xh5for_factory.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M775.209,-608.952C792.467,-606.296 810.325,-603.284 827,-600 836.678,-598.094 846.911,-595.796 856.789,-593.428"/>
<polygon fill="#000000" stroke="#000000" points="857.632,-596.825 866.515,-591.05 855.969,-590.026 857.632,-596.825"/>
</g>
<!-- sourcefile~xh5for_handler.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node8" class="node"><title>sourcefile~xh5for_handler.f90</title>
<g id="a_sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node8"><a xlink:href="../sourcefile/xh5for_handler.f90.html" xlink:title="xh5for_handler.f90">
<polygon fill="#f0ad4e" stroke="#f0ad4e" points="1101,-591 998,-591 998,-567 1101,-567 1101,-591"/>
<text text-anchor="middle" x="1049.5" y="-576.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">xh5for_handler.f90</text>
</a>
</g>
</g>
<!-- sourcefile~xh5for_factory.f90&#45;&gt;sourcefile~xh5for_handler.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_edge30" class="edge"><title>sourcefile~xh5for_factory.f90&#45;&gt;sourcefile~xh5for_handler.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M962.238,-579C970.4,-579 978.959,-579 987.384,-579"/>
<polygon fill="#000000" stroke="#000000" points="987.559,-582.5 997.558,-579 987.558,-575.5 987.559,-582.5"/>
</g>
<!-- sourcefile~xh5for.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node9" class="node"><title>sourcefile~xh5for.f90</title>
<g id="a_sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node9"><a xlink:href="../sourcefile/xh5for.f90.html" xlink:title="xh5for.f90">
<polygon fill="#f0ad4e" stroke="#f0ad4e" points="1198,-591 1137,-591 1137,-567 1198,-567 1198,-591"/>
<text text-anchor="middle" x="1167.5" y="-576.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">xh5for.f90</text>
</a>
</g>
</g>
<!-- sourcefile~xh5for_handler.f90&#45;&gt;sourcefile~xh5for.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_edge29" class="edge"><title>sourcefile~xh5for_handler.f90&#45;&gt;sourcefile~xh5for.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M1101.04,-579C1109.63,-579 1118.43,-579 1126.69,-579"/>
<polygon fill="#000000" stroke="#000000" points="1126.81,-582.5 1136.81,-579 1126.81,-575.5 1126.81,-582.5"/>
</g>
<!-- sourcefile~xh5for_dpp_unstructured_tetrahedron.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node10" class="node"><title>sourcefile~xh5for_dpp_unstructured_tetrahedron.f90</title>
<g id="a_sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node10"><a xlink:href="../sourcefile/xh5for_dpp_unstructured_tetrahedron.f90.html" xlink:title="xh5for_dpp_unstructured_tetrahedron.f90">
<polygon fill="#f0ad4e" stroke="#f0ad4e" points="1473.5,-1158 1261.5,-1158 1261.5,-1134 1473.5,-1134 1473.5,-1158"/>
<text text-anchor="middle" x="1367.5" y="-1143.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">xh5for_dpp_unstructured_tetrahedron.f90</text>
</a>
</g>
</g>
<!-- sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_dpp_unstructured_tetrahedron.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_edge1" class="edge"><title>sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_dpp_unstructured_tetrahedron.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M1169.11,-591.445C1173,-669.097 1195.59,-1085.11 1234,-1125 1239.28,-1130.48 1245.36,-1134.9 1251.96,-1138.45"/>
<polygon fill="#000000" stroke="#000000" points="1250.72,-1141.73 1261.26,-1142.76 1253.66,-1135.38 1250.72,-1141.73"/>
</g>
<!-- sourcefile~xh5for_dpp_unstructured_hexahedron.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node11" class="node"><title>sourcefile~xh5for_dpp_unstructured_hexahedron.f90</title>
<g id="a_sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node11"><a xlink:href="../sourcefile/xh5for_dpp_unstructured_hexahedron.f90.html" xlink:title="xh5for_dpp_unstructured_hexahedron.f90">
<polygon fill="#f0ad4e" stroke="#f0ad4e" points="1474.5,-1116 1260.5,-1116 1260.5,-1092 1474.5,-1092 1474.5,-1116"/>
<text text-anchor="middle" x="1367.5" y="-1101.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">xh5for_dpp_unstructured_hexahedron.f90</text>
</a>
</g>
</g>
<!-- sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_dpp_unstructured_hexahedron.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_edge2" class="edge"><title>sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_dpp_unstructured_hexahedron.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M1168.2,-591.289C1166.76,-661.4 1163.26,-1010.25 1234,-1083 1239.02,-1088.16 1244.76,-1092.38 1250.97,-1095.81"/>
<polygon fill="#000000" stroke="#000000" points="1249.84,-1099.15 1260.38,-1100.3 1252.85,-1092.84 1249.84,-1099.15"/>
</g>
<!-- sourcefile~xh5for_dpp_unstructured_non_static_tetrahedron.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node12" class="node"><title>sourcefile~xh5for_dpp_unstructured_non_static_tetrahedron.f90</title>
<g id="a_sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node12"><a xlink:href="../sourcefile/xh5for_dpp_unstructured_non_static_tetrahedron.f90.html" xlink:title="xh5for_dpp_unstructured_non_static_tetrahedron.f90">
<polygon fill="#f0ad4e" stroke="#f0ad4e" points="1501,-1074 1234,-1074 1234,-1050 1501,-1050 1501,-1074"/>
<text text-anchor="middle" x="1367.5" y="-1059.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">xh5for_dpp_unstructured_non_static_tetrahedron.f90</text>
</a>
</g>
</g>
<!-- sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_dpp_unstructured_non_static_tetrahedron.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_edge3" class="edge"><title>sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_dpp_unstructured_non_static_tetrahedron.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M1168.36,-591.127C1167.87,-657.366 1168.95,-974.877 1234,-1041 1234.82,-1041.83 1235.65,-1042.64 1236.5,-1043.42"/>
<polygon fill="#000000" stroke="#000000" points="1234.61,-1046.38 1244.63,-1049.83 1238.95,-1040.89 1234.61,-1046.38"/>
</g>
<!-- sourcefile~xh5for_ch_unstructured_static_mixed_series.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node13" class="node"><title>sourcefile~xh5for_ch_unstructured_static_mixed_series.f90</title>
<g id="a_sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node13"><a xlink:href="../sourcefile/xh5for_ch_unstructured_static_mixed_series.f90.html" xlink:title="xh5for_ch_unstructured_static_mixed_series.f90">
<polygon fill="#f0ad4e" stroke="#f0ad4e" points="1489.5,-1032 1245.5,-1032 1245.5,-1008 1489.5,-1008 1489.5,-1032"/>
<text text-anchor="middle" x="1367.5" y="-1017.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">xh5for_ch_unstructured_static_mixed_series.f90</text>
</a>
</g>
</g>
<!-- sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_ch_unstructured_static_mixed_series.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_edge4" class="edge"><title>sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_ch_unstructured_static_mixed_series.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M1168.55,-591.248C1169.07,-654.077 1174.72,-939.568 1234,-999 1234.97,-999.974 1235.97,-1000.91 1236.99,-1001.82"/>
<polygon fill="#000000" stroke="#000000" points="1235.19,-1004.85 1245.26,-1008.15 1239.45,-999.296 1235.19,-1004.85"/>
</g>
<!-- sourcefile~xh5for_ch_unstructured_non_static_tetrahedron.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node14" class="node"><title>sourcefile~xh5for_ch_unstructured_non_static_tetrahedron.f90</title>
<g id="a_sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node14"><a xlink:href="../sourcefile/xh5for_ch_unstructured_non_static_tetrahedron.f90.html" xlink:title="xh5for_ch_unstructured_non_static_tetrahedron.f90">
<polygon fill="#f0ad4e" stroke="#f0ad4e" points="1497.5,-990 1237.5,-990 1237.5,-966 1497.5,-966 1497.5,-990"/>
<text text-anchor="middle" x="1367.5" y="-975.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">xh5for_ch_unstructured_non_static_tetrahedron.f90</text>
</a>
</g>
</g>
<!-- sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_ch_unstructured_non_static_tetrahedron.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_edge5" class="edge"><title>sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_ch_unstructured_non_static_tetrahedron.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M1168.78,-591.18C1170.39,-650.02 1180.4,-904.167 1234,-957 1234.96,-957.943 1235.94,-958.854 1236.94,-959.734"/>
<polygon fill="#000000" stroke="#000000" points="1234.97,-962.629 1245.05,-965.892 1239.2,-957.055 1234.97,-962.629"/>
</g>
<!-- sourcefile~xh5for_ch_unstructured_quadilateral.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node15" class="node"><title>sourcefile~xh5for_ch_unstructured_quadilateral.f90</title>
<g id="a_sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node15"><a xlink:href="../sourcefile/xh5for_ch_unstructured_quadilateral.f90.html" xlink:title="xh5for_ch_unstructured_quadilateral.f90">
<polygon fill="#f0ad4e" stroke="#f0ad4e" points="1470,-948 1265,-948 1265,-924 1470,-924 1470,-948"/>
<text text-anchor="middle" x="1367.5" y="-933.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">xh5for_ch_unstructured_quadilateral.f90</text>
</a>
</g>
</g>
<!-- sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_ch_unstructured_quadilateral.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_edge6" class="edge"><title>sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_ch_unstructured_quadilateral.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M1169.07,-591.271C1171.88,-646.193 1186.11,-868.772 1234,-915 1240.26,-921.046 1247.52,-925.773 1255.35,-929.44"/>
<polygon fill="#000000" stroke="#000000" points="1254.2,-932.749 1264.78,-933.271 1256.83,-926.264 1254.2,-932.749"/>
</g>
<!-- sourcefile~xh5for_dpp_regular_non_static_grid_series.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node16" class="node"><title>sourcefile~xh5for_dpp_regular_non_static_grid_series.f90</title>
<g id="a_sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node16"><a xlink:href="../sourcefile/xh5for_dpp_regular_non_static_grid_series.f90.html" xlink:title="xh5for_dpp_regular_non_static_grid_series.f90">
<polygon fill="#f0ad4e" stroke="#f0ad4e" points="1486.5,-906 1248.5,-906 1248.5,-882 1486.5,-882 1486.5,-906"/>
<text text-anchor="middle" x="1367.5" y="-891.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">xh5for_dpp_regular_non_static_grid_series.f90</text>
</a>
</g>
</g>
<!-- sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_dpp_regular_non_static_grid_series.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_edge7" class="edge"><title>sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_dpp_regular_non_static_grid_series.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M1169.42,-591.077C1173.51,-641.349 1191.7,-833.248 1234,-873 1235.76,-874.652 1237.59,-876.205 1239.49,-877.664"/>
<polygon fill="#000000" stroke="#000000" points="1237.95,-880.841 1248.21,-883.476 1241.83,-875.017 1237.95,-880.841"/>
</g>
<!-- sourcefile~xh5for_ch_regular_grid.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node17" class="node"><title>sourcefile~xh5for_ch_regular_grid.f90</title>
<g id="a_sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node17"><a xlink:href="../sourcefile/xh5for_ch_regular_grid.f90.html" xlink:title="xh5for_ch_regular_grid.f90">
<polygon fill="#f0ad4e" stroke="#f0ad4e" points="1438.5,-864 1296.5,-864 1296.5,-840 1438.5,-840 1438.5,-864"/>
<text text-anchor="middle" x="1367.5" y="-849.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">xh5for_ch_regular_grid.f90</text>
</a>
</g>
</g>
<!-- sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_ch_regular_grid.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_edge8" class="edge"><title>sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_ch_regular_grid.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M1169.91,-591.186C1175.47,-636.965 1197.34,-797.74 1234,-831 1248.32,-843.994 1267.29,-850.768 1286.39,-853.991"/>
<polygon fill="#000000" stroke="#000000" points="1285.97,-857.467 1296.36,-855.366 1286.93,-850.533 1285.97,-857.467"/>
</g>
<!-- sourcefile~xh5for_ch_rectilinear_non_static_grid_series.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node18" class="node"><title>sourcefile~xh5for_ch_rectilinear_non_static_grid_series.f90</title>
<g id="a_sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node18"><a xlink:href="../sourcefile/xh5for_ch_rectilinear_non_static_grid_series.f90.html" xlink:title="xh5for_ch_rectilinear_non_static_grid_series.f90">
<polygon fill="#f0ad4e" stroke="#f0ad4e" points="1489.5,-822 1245.5,-822 1245.5,-798 1489.5,-798 1489.5,-822"/>
<text text-anchor="middle" x="1367.5" y="-807.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">xh5for_ch_rectilinear_non_static_grid_series.f90</text>
</a>
</g>
</g>
<!-- sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_ch_rectilinear_non_static_grid_series.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_edge9" class="edge"><title>sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_ch_rectilinear_non_static_grid_series.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M1168.21,-591.042C1168.05,-627.298 1172.89,-736.177 1234,-789 1235.33,-790.152 1236.7,-791.254 1238.1,-792.308"/>
<polygon fill="#000000" stroke="#000000" points="1236.21,-795.251 1246.48,-797.838 1240.07,-789.408 1236.21,-795.251"/>
</g>
<!-- sourcefile~xh5for_ch_unstructured_triangles.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node19" class="node"><title>sourcefile~xh5for_ch_unstructured_triangles.f90</title>
<g id="a_sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node19"><a xlink:href="../sourcefile/xh5for_ch_unstructured_triangles.f90.html" xlink:title="xh5for_ch_unstructured_triangles.f90">
<polygon fill="#f0ad4e" stroke="#f0ad4e" points="1462.5,-780 1272.5,-780 1272.5,-756 1462.5,-756 1462.5,-780"/>
<text text-anchor="middle" x="1367.5" y="-765.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">xh5for_ch_unstructured_triangles.f90</text>
</a>
</g>
</g>
<!-- sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_ch_unstructured_triangles.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_edge10" class="edge"><title>sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_ch_unstructured_triangles.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M1169.27,-591.093C1171.97,-622.414 1183.78,-706.545 1234,-747 1242.47,-753.824 1252.26,-758.857 1262.61,-762.525"/>
<polygon fill="#000000" stroke="#000000" points="1261.65,-765.894 1272.24,-765.522 1263.73,-759.21 1261.65,-765.894"/>
</g>
<!-- sourcefile~xh5for_ch_regular_non_static_grid_series.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node20" class="node"><title>sourcefile~xh5for_ch_regular_non_static_grid_series.f90</title>
<g id="a_sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node20"><a xlink:href="../sourcefile/xh5for_ch_regular_non_static_grid_series.f90.html" xlink:title="xh5for_ch_regular_non_static_grid_series.f90">
<polygon fill="#f0ad4e" stroke="#f0ad4e" points="1483,-738 1252,-738 1252,-714 1483,-714 1483,-738"/>
<text text-anchor="middle" x="1367.5" y="-723.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">xh5for_ch_regular_non_static_grid_series.f90</text>
</a>
</g>
</g>
<!-- sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_ch_regular_non_static_grid_series.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_edge11" class="edge"><title>sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_ch_regular_non_static_grid_series.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M1170.96,-591.078C1176.87,-616.697 1194.39,-676.466 1234,-705 1236.87,-707.071 1239.88,-708.97 1242.98,-710.71"/>
<polygon fill="#000000" stroke="#000000" points="1241.46,-713.862 1251.96,-715.204 1244.59,-707.601 1241.46,-713.862"/>
</g>
<!-- sourcefile~xh5for_ch_regular_static_grid_series.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node21" class="node"><title>sourcefile~xh5for_ch_regular_static_grid_series.f90</title>
<g id="a_sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node21"><a xlink:href="../sourcefile/xh5for_ch_regular_static_grid_series.f90.html" xlink:title="xh5for_ch_regular_static_grid_series.f90">
<polygon fill="#f0ad4e" stroke="#f0ad4e" points="1471,-696 1264,-696 1264,-672 1471,-672 1471,-696"/>
<text text-anchor="middle" x="1367.5" y="-681.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">xh5for_ch_regular_static_grid_series.f90</text>
</a>
</g>
</g>
<!-- sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_ch_regular_static_grid_series.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_edge12" class="edge"><title>sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_ch_regular_static_grid_series.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M1174.17,-591.094C1183.68,-609.882 1204.69,-645.715 1234,-663 1240.34,-666.742 1247.14,-669.879 1254.19,-672.505"/>
<polygon fill="#000000" stroke="#000000" points="1253.33,-675.91 1263.93,-675.777 1255.56,-669.275 1253.33,-675.91"/>
</g>
<!-- sourcefile~xh5for_dpp_rectilinear_grid.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node22" class="node"><title>sourcefile~xh5for_dpp_rectilinear_grid.f90</title>
<g id="a_sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node22"><a xlink:href="../sourcefile/xh5for_dpp_rectilinear_grid.f90.html" xlink:title="xh5for_dpp_rectilinear_grid.f90">
<polygon fill="#f0ad4e" stroke="#f0ad4e" points="1448,-654 1287,-654 1287,-630 1448,-630 1448,-654"/>
<text text-anchor="middle" x="1367.5" y="-639.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">xh5for_dpp_rectilinear_grid.f90</text>
</a>
</g>
</g>
<!-- sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_dpp_rectilinear_grid.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_edge13" class="edge"><title>sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_dpp_rectilinear_grid.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M1183.4,-591.126C1196.09,-600.787 1215.19,-613.84 1234,-621 1247.53,-626.15 1262.3,-630.036 1276.91,-632.97"/>
<polygon fill="#000000" stroke="#000000" points="1276.51,-636.456 1286.98,-634.853 1277.8,-629.575 1276.51,-636.456"/>
</g>
<!-- sourcefile~xh5for_dpp_rectilinear_static_grid_series.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node23" class="node"><title>sourcefile~xh5for_dpp_rectilinear_static_grid_series.f90</title>
<g id="a_sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node23"><a xlink:href="../sourcefile/xh5for_dpp_rectilinear_static_grid_series.f90.html" xlink:title="xh5for_dpp_rectilinear_static_grid_series.f90">
<polygon fill="#f0ad4e" stroke="#f0ad4e" points="1480.5,-612 1254.5,-612 1254.5,-588 1480.5,-588 1480.5,-612"/>
<text text-anchor="middle" x="1367.5" y="-597.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">xh5for_dpp_rectilinear_static_grid_series.f90</text>
</a>
</g>
</g>
<!-- sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_dpp_rectilinear_static_grid_series.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_edge14" class="edge"><title>sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_dpp_rectilinear_static_grid_series.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M1198.14,-582.144C1211.04,-583.512 1227.09,-585.214 1244.12,-587.02"/>
<polygon fill="#000000" stroke="#000000" points="1243.93,-590.52 1254.24,-588.094 1244.67,-583.559 1243.93,-590.52"/>
</g>
<!-- sourcefile~xh5for_dpp_unstructured_mixedtopology.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node24" class="node"><title>sourcefile~xh5for_dpp_unstructured_mixedtopology.f90</title>
<g id="a_sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node24"><a xlink:href="../sourcefile/xh5for_dpp_unstructured_mixedtopology.f90.html" xlink:title="xh5for_dpp_unstructured_mixedtopology.f90">
<polygon fill="#f0ad4e" stroke="#f0ad4e" points="1480.5,-570 1254.5,-570 1254.5,-546 1480.5,-546 1480.5,-570"/>
<text text-anchor="middle" x="1367.5" y="-555.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">xh5for_dpp_unstructured_mixedtopology.f90</text>
</a>
</g>
</g>
<!-- sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_dpp_unstructured_mixedtopology.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_edge15" class="edge"><title>sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_dpp_unstructured_mixedtopology.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M1198.14,-575.856C1211.04,-574.488 1227.09,-572.786 1244.12,-570.98"/>
<polygon fill="#000000" stroke="#000000" points="1244.67,-574.441 1254.24,-569.906 1243.93,-567.48 1244.67,-574.441"/>
</g>
<!-- sourcefile~xh5for_dpp_regular_grid.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node25" class="node"><title>sourcefile~xh5for_dpp_regular_grid.f90</title>
<g id="a_sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node25"><a xlink:href="../sourcefile/xh5for_dpp_regular_grid.f90.html" xlink:title="xh5for_dpp_regular_grid.f90">
<polygon fill="#f0ad4e" stroke="#f0ad4e" points="1441.5,-528 1293.5,-528 1293.5,-504 1441.5,-504 1441.5,-528"/>
<text text-anchor="middle" x="1367.5" y="-513.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">xh5for_dpp_regular_grid.f90</text>
</a>
</g>
</g>
<!-- sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_dpp_regular_grid.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_edge16" class="edge"><title>sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_dpp_regular_grid.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M1183.4,-566.874C1196.09,-557.213 1215.19,-544.16 1234,-537 1249.41,-531.134 1266.43,-526.906 1283,-523.86"/>
<polygon fill="#000000" stroke="#000000" points="1283.97,-527.245 1293.23,-522.111 1282.79,-520.345 1283.97,-527.245"/>
</g>
<!-- sourcefile~xh5for_ch_unstructured_tetrahedron.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node26" class="node"><title>sourcefile~xh5for_ch_unstructured_tetrahedron.f90</title>
<g id="a_sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node26"><a xlink:href="../sourcefile/xh5for_ch_unstructured_tetrahedron.f90.html" xlink:title="xh5for_ch_unstructured_tetrahedron.f90">
<polygon fill="#f0ad4e" stroke="#f0ad4e" points="1470,-486 1265,-486 1265,-462 1470,-462 1470,-486"/>
<text text-anchor="middle" x="1367.5" y="-471.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">xh5for_ch_unstructured_tetrahedron.f90</text>
</a>
</g>
</g>
<!-- sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_ch_unstructured_tetrahedron.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_edge17" class="edge"><title>sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_ch_unstructured_tetrahedron.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M1174.17,-566.906C1183.68,-548.118 1204.69,-512.285 1234,-495 1240.7,-491.048 1247.91,-487.771 1255.38,-485.058"/>
<polygon fill="#000000" stroke="#000000" points="1256.54,-488.358 1264.96,-481.916 1254.36,-481.707 1256.54,-488.358"/>
</g>
<!-- sourcefile~xh5for_dpp_unstructured_triangles.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node27" class="node"><title>sourcefile~xh5for_dpp_unstructured_triangles.f90</title>
<g id="a_sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node27"><a xlink:href="../sourcefile/xh5for_dpp_unstructured_triangles.f90.html" xlink:title="xh5for_dpp_unstructured_triangles.f90">
<polygon fill="#f0ad4e" stroke="#f0ad4e" points="1466,-444 1269,-444 1269,-420 1466,-420 1466,-444"/>
<text text-anchor="middle" x="1367.5" y="-429.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">xh5for_dpp_unstructured_triangles.f90</text>
</a>
</g>
</g>
<!-- sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_dpp_unstructured_triangles.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_edge18" class="edge"><title>sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_dpp_unstructured_triangles.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M1170.96,-566.922C1176.87,-541.303 1194.39,-481.534 1234,-453 1241.71,-447.443 1250.34,-443.124 1259.38,-439.79"/>
<polygon fill="#000000" stroke="#000000" points="1260.53,-443.098 1268.94,-436.661 1258.35,-436.445 1260.53,-443.098"/>
</g>
<!-- sourcefile~xh5for_dpp_regular_static_grid_series.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node28" class="node"><title>sourcefile~xh5for_dpp_regular_static_grid_series.f90</title>
<g id="a_sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node28"><a xlink:href="../sourcefile/xh5for_dpp_regular_static_grid_series.f90.html" xlink:title="xh5for_dpp_regular_static_grid_series.f90">
<polygon fill="#f0ad4e" stroke="#f0ad4e" points="1474.5,-402 1260.5,-402 1260.5,-378 1474.5,-378 1474.5,-402"/>
<text text-anchor="middle" x="1367.5" y="-387.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">xh5for_dpp_regular_static_grid_series.f90</text>
</a>
</g>
</g>
<!-- sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_dpp_regular_static_grid_series.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_edge19" class="edge"><title>sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_dpp_regular_static_grid_series.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M1169.27,-566.907C1171.97,-535.586 1183.78,-451.455 1234,-411 1239.3,-406.73 1245.12,-403.161 1251.27,-400.189"/>
<polygon fill="#000000" stroke="#000000" points="1252.67,-403.397 1260.49,-396.249 1249.92,-396.96 1252.67,-403.397"/>
</g>
<!-- sourcefile~xh5for_dpp_unstructured_static_tetrahedron.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node29" class="node"><title>sourcefile~xh5for_dpp_unstructured_static_tetrahedron.f90</title>
<g id="a_sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node29"><a xlink:href="../sourcefile/xh5for_dpp_unstructured_static_tetrahedron.f90.html" xlink:title="xh5for_dpp_unstructured_static_tetrahedron.f90">
<polygon fill="#f0ad4e" stroke="#f0ad4e" points="1489,-360 1246,-360 1246,-336 1489,-336 1489,-360"/>
<text text-anchor="middle" x="1367.5" y="-345.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">xh5for_dpp_unstructured_static_tetrahedron.f90</text>
</a>
</g>
</g>
<!-- sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_dpp_unstructured_static_tetrahedron.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_edge20" class="edge"><title>sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_dpp_unstructured_static_tetrahedron.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M1168.21,-566.958C1168.05,-530.702 1172.89,-421.823 1234,-369 1235.33,-367.848 1236.7,-366.746 1238.1,-365.692"/>
<polygon fill="#000000" stroke="#000000" points="1240.07,-368.592 1246.48,-360.162 1236.21,-362.749 1240.07,-368.592"/>
</g>
<!-- sourcefile~xh5for_ch_unstructured_hexahedron_perf.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node30" class="node"><title>sourcefile~xh5for_ch_unstructured_hexahedron_perf.f90</title>
<g id="a_sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node30"><a xlink:href="../sourcefile/xh5for_ch_unstructured_hexahedron_perf.f90.html" xlink:title="xh5for_ch_unstructured_hexahedron_perf.f90">
<polygon fill="#f0ad4e" stroke="#f0ad4e" points="1483.5,-318 1251.5,-318 1251.5,-294 1483.5,-294 1483.5,-318"/>
<text text-anchor="middle" x="1367.5" y="-303.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">xh5for_ch_unstructured_hexahedron_perf.f90</text>
</a>
</g>
</g>
<!-- sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_ch_unstructured_hexahedron_perf.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_edge21" class="edge"><title>sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_ch_unstructured_hexahedron_perf.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M1169.91,-566.814C1175.47,-521.035 1197.34,-360.26 1234,-327 1236.71,-324.539 1239.59,-322.301 1242.61,-320.268"/>
<polygon fill="#000000" stroke="#000000" points="1244.6,-323.156 1251.44,-315.066 1241.05,-317.125 1244.6,-323.156"/>
</g>
<!-- sourcefile~xh5for_ch_unstructured_static_tetrahedron.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node31" class="node"><title>sourcefile~xh5for_ch_unstructured_static_tetrahedron.f90</title>
<g id="a_sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node31"><a xlink:href="../sourcefile/xh5for_ch_unstructured_static_tetrahedron.f90.html" xlink:title="xh5for_ch_unstructured_static_tetrahedron.f90">
<polygon fill="#f0ad4e" stroke="#f0ad4e" points="1485.5,-276 1249.5,-276 1249.5,-252 1485.5,-252 1485.5,-276"/>
<text text-anchor="middle" x="1367.5" y="-261.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">xh5for_ch_unstructured_static_tetrahedron.f90</text>
</a>
</g>
</g>
<!-- sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_ch_unstructured_static_tetrahedron.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_edge22" class="edge"><title>sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_ch_unstructured_static_tetrahedron.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M1169.42,-566.923C1173.51,-516.651 1191.7,-324.752 1234,-285 1236.19,-282.944 1238.49,-281.042 1240.89,-279.283"/>
<polygon fill="#000000" stroke="#000000" points="1242.87,-282.174 1249.41,-273.841 1239.1,-276.274 1242.87,-282.174"/>
</g>
<!-- sourcefile~xh5for_dpp_rectilinear_non_static_grid_series.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node32" class="node"><title>sourcefile~xh5for_dpp_rectilinear_non_static_grid_series.f90</title>
<g id="a_sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node32"><a xlink:href="../sourcefile/xh5for_dpp_rectilinear_non_static_grid_series.f90.html" xlink:title="xh5for_dpp_rectilinear_non_static_grid_series.f90">
<polygon fill="#f0ad4e" stroke="#f0ad4e" points="1492.5,-234 1242.5,-234 1242.5,-210 1492.5,-210 1492.5,-234"/>
<text text-anchor="middle" x="1367.5" y="-219.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">xh5for_dpp_rectilinear_non_static_grid_series.f90</text>
</a>
</g>
</g>
<!-- sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_dpp_rectilinear_non_static_grid_series.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_edge23" class="edge"><title>sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_dpp_rectilinear_non_static_grid_series.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M1169.07,-566.729C1171.88,-511.807 1186.11,-289.228 1234,-243 1234.99,-242.045 1236,-241.122 1237.04,-240.232"/>
<polygon fill="#000000" stroke="#000000" points="1239.48,-242.782 1245.42,-234.012 1235.31,-237.16 1239.48,-242.782"/>
</g>
<!-- sourcefile~xh5for_ch_unstructured_mixedtopology.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node33" class="node"><title>sourcefile~xh5for_ch_unstructured_mixedtopology.f90</title>
<g id="a_sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node33"><a xlink:href="../sourcefile/xh5for_ch_unstructured_mixedtopology.f90.html" xlink:title="xh5for_ch_unstructured_mixedtopology.f90">
<polygon fill="#f0ad4e" stroke="#f0ad4e" points="1477,-192 1258,-192 1258,-168 1477,-168 1477,-192"/>
<text text-anchor="middle" x="1367.5" y="-177.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">xh5for_ch_unstructured_mixedtopology.f90</text>
</a>
</g>
</g>
<!-- sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_ch_unstructured_mixedtopology.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_edge24" class="edge"><title>sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_ch_unstructured_mixedtopology.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M1168.78,-566.82C1170.39,-507.98 1180.4,-253.833 1234,-201 1238.41,-196.653 1243.33,-192.983 1248.61,-189.895"/>
<polygon fill="#000000" stroke="#000000" points="1250.48,-192.875 1257.82,-185.232 1247.31,-186.631 1250.48,-192.875"/>
</g>
<!-- sourcefile~xh5for_ch_rectilinear_static_grid_series.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node34" class="node"><title>sourcefile~xh5for_ch_rectilinear_static_grid_series.f90</title>
<g id="a_sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node34"><a xlink:href="../sourcefile/xh5for_ch_rectilinear_static_grid_series.f90.html" xlink:title="xh5for_ch_rectilinear_static_grid_series.f90">
<polygon fill="#f0ad4e" stroke="#f0ad4e" points="1477.5,-150 1257.5,-150 1257.5,-126 1477.5,-126 1477.5,-150"/>
<text text-anchor="middle" x="1367.5" y="-135.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">xh5for_ch_rectilinear_static_grid_series.f90</text>
</a>
</g>
</g>
<!-- sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_ch_rectilinear_static_grid_series.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_edge25" class="edge"><title>sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_ch_rectilinear_static_grid_series.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M1168.55,-566.752C1169.07,-503.923 1174.72,-218.432 1234,-159 1238.32,-154.669 1243.15,-151.006 1248.34,-147.919"/>
<polygon fill="#000000" stroke="#000000" points="1250.1,-150.948 1257.38,-143.251 1246.89,-144.728 1250.1,-150.948"/>
</g>
<!-- sourcefile~xh5for_dpp_unstructured_quadilateral.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node35" class="node"><title>sourcefile~xh5for_dpp_unstructured_quadilateral.f90</title>
<g id="a_sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node35"><a xlink:href="../sourcefile/xh5for_dpp_unstructured_quadilateral.f90.html" xlink:title="xh5for_dpp_unstructured_quadilateral.f90">
<polygon fill="#f0ad4e" stroke="#f0ad4e" points="1473.5,-108 1261.5,-108 1261.5,-84 1473.5,-84 1473.5,-108"/>
<text text-anchor="middle" x="1367.5" y="-93.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">xh5for_dpp_unstructured_quadilateral.f90</text>
</a>
</g>
</g>
<!-- sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_dpp_unstructured_quadilateral.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_edge26" class="edge"><title>sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_dpp_unstructured_quadilateral.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M1168.36,-566.873C1167.87,-500.634 1168.95,-183.123 1234,-117 1239.33,-111.578 1245.46,-107.198 1252.1,-103.681"/>
<polygon fill="#000000" stroke="#000000" points="1253.8,-106.752 1261.43,-99.4054 1250.88,-100.388 1253.8,-106.752"/>
</g>
<!-- sourcefile~xh5for_ch_rectilinear_grid.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node36" class="node"><title>sourcefile~xh5for_ch_rectilinear_grid.f90</title>
<g id="a_sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node36"><a xlink:href="../sourcefile/xh5for_ch_rectilinear_grid.f90.html" xlink:title="xh5for_ch_rectilinear_grid.f90">
<polygon fill="#f0ad4e" stroke="#f0ad4e" points="1444.5,-66 1290.5,-66 1290.5,-42 1444.5,-42 1444.5,-66"/>
<text text-anchor="middle" x="1367.5" y="-51.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">xh5for_ch_rectilinear_grid.f90</text>
</a>
</g>
</g>
<!-- sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_ch_rectilinear_grid.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_edge27" class="edge"><title>sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_ch_rectilinear_grid.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M1168.2,-566.711C1166.76,-496.6 1163.26,-147.747 1234,-75 1246.28,-62.368 1262.88,-55.368 1280.16,-51.7744"/>
<polygon fill="#000000" stroke="#000000" points="1281.12,-55.1619 1290.39,-50.0354 1279.95,-48.2609 1281.12,-55.1619"/>
</g>
<!-- sourcefile~xh5for_ch_unstructured_hexahedron.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node37" class="node"><title>sourcefile~xh5for_ch_unstructured_hexahedron.f90</title>
<g id="a_sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_node37"><a xlink:href="../sourcefile/xh5for_ch_unstructured_hexahedron.f90.html" xlink:title="xh5for_ch_unstructured_hexahedron.f90">
<polygon fill="#f0ad4e" stroke="#f0ad4e" points="1471,-24 1264,-24 1264,-0 1471,-0 1471,-24"/>
<text text-anchor="middle" x="1367.5" y="-9.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">xh5for_ch_unstructured_hexahedron.f90</text>
</a>
</g>
</g>
<!-- sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_ch_unstructured_hexahedron.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_edge28" class="edge"><title>sourcefile~xh5for.f90&#45;&gt;sourcefile~xh5for_ch_unstructured_hexahedron.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M1169.11,-566.555C1173,-488.903 1195.59,-72.8877 1234,-33 1239.98,-26.7898 1247,-21.9365 1254.64,-18.1775"/>
<polygon fill="#000000" stroke="#000000" points="1256.03,-21.3894 1263.86,-14.2516 1253.28,-14.9489 1256.03,-21.3894"/>
</g>
<!-- sourcefile~unstructured_dataset_per_process_factory.f90&#45;&gt;sourcefile~xh5for_factory.f90 -->
<g id="sourcefile~~hdf5_dataset_per_process_handler.f90~~AfferentGraph_edge35" class="edge"><title>sourcefile~unstructured_dataset_per_process_factory.f90&#45;&gt;sourcefile~xh5for_factory.f90</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" d="M775.209,-549.048C792.467,-551.704 810.325,-554.716 827,-558 836.678,-559.906 846.911,-562.204 856.789,-564.572"/>
<polygon fill="#000000" stroke="#000000" points="855.969,-567.974 866.515,-566.95 857.632,-561.175 855.969,-567.974"/>
</g>
</g>
</svg>
</div>
                <script>var pansourcefilehdf5_dataset_per_process_handlerf90AfferentGraph = svgPanZoom('#sourcefilehdf5_dataset_per_process_handlerf90AfferentGraph', {
                    zoomEnabled: true,
                    controlIconsEnabled: true,
                    fit: true,
                    center: true,});
                    </script>
                <div><a type="button" class="graph-help" data-toggle="modal" href="#graph-help-text">Help</a></div>
                <div class="modal fade" id="graph-help-text" tabindex="-1" role="dialog">
                  <div class="modal-dialog modal-lg" role="document">
                    <div class="modal-content">
                      <div class="modal-header">
                        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                        <h4 class="modal-title" id="-graph-help-label">Graph Key</h4>
                      </div>
                      <div class="modal-body">
                        
    <p>Nodes of different colours represent the following: </p>
    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.38.0 (20140413.2041)
 -->
<!-- Title: Graph Key Pages: 1 -->
<svg width="190pt" height="32pt"
 viewBox="0.00 0.00 190.00 32.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 28)">
<title>Graph Key</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-28 186,-28 186,4 -4,4"/>
<!-- Source File -->
<g id="node1" class="node"><title>Source File</title>
<polygon fill="#f0ad4e" stroke="#f0ad4e" points="67,-24 0,-24 0,-0 67,-0 67,-24"/>
<text text-anchor="middle" x="33.5" y="-9.6" font-family="Helvetica,sans-Serif" font-size="10.50" fill="white">Source File</text>
</g>
<!-- This Page&#39;s Entity -->
<g id="node2" class="node"><title>This Page&#39;s Entity</title>
<polygon fill="none" stroke="black" points="182,-24 85,-24 85,-0 182,-0 182,-24"/>
<text text-anchor="middle" x="133.5" y="-9.6" font-family="Helvetica,sans-Serif" font-size="10.50">This Page&#39;s Entity</text>
</g>
</g>
</svg>

    
    <p>Solid arrows point from a file to a file which depends upon it. A file 
    is dependent upon another if the latter must be compiled before the former
    can be.
    </p>
    
                      </div>
                    </div>
                  </div>
                </div>
                
      
      <br>

    <section class="visible-xs visible-sm hidden-md">
      






<div class="panel panel-primary">
  <div class="panel-heading text-left"><h3 class="panel-title"><a data-toggle="collapse" href="#mods-1">Modules</a></h3></div>
  <div id="mods-1" class="panel-collapse collapse">
    <div class="list-group">
      
      <a class="list-group-item" href="../module/hdf5_dataset_per_process_handler.html">hdf5_dataset_per_process_handler</a>
      
    </div>
  </div>
</div>















<div class="panel panel-primary">
  <div class="panel-heading text-left"><h3 class="panel-title">Source Code</h3></div>
  <div class="list-group">
    <a class="list-group-item" href="../sourcefile/hdf5_dataset_per_process_handler.f90.html#src">hdf5_dataset_per_process_handler.f90</a>
  </div>
</div>


    </section>
    <br class="visible-xs visible-sm hidden-md">

    <section>
      <h2><span class="anchor" id="src"></span>Source Code</h2>
    <div class="hl"><pre><a name="ln-1"></a><span class="k">module </span><span class="n">hdf5_dataset_per_process_handler</span>
<a name="ln-2"></a>
<a name="ln-3"></a><span class="k">use </span><span class="n">PENF</span><span class="p">,</span> <span class="n">only</span> <span class="p">:</span> <span class="n">I4P</span><span class="p">,</span> <span class="n">I8P</span><span class="p">,</span> <span class="n">R4P</span><span class="p">,</span> <span class="n">R8P</span><span class="p">,</span> <span class="n">str</span>
<a name="ln-4"></a><span class="cp">#ifdef ENABLE_HDF5</span>
<a name="ln-5"></a><span class="k">use </span><span class="n">HDF5</span>
<a name="ln-6"></a><span class="cp">#endif</span>
<a name="ln-7"></a><span class="k">use </span><span class="n">hdf5_handler</span>
<a name="ln-8"></a><span class="k">use </span><span class="n">xh5for_utils</span>
<a name="ln-9"></a><span class="k">use </span><span class="n">xh5for_parameters</span>
<a name="ln-10"></a><span class="k">use </span><span class="n">mpi_environment</span>
<a name="ln-11"></a><span class="k">use </span><span class="n">spatial_grid_descriptor</span>
<a name="ln-12"></a>
<a name="ln-13"></a><span class="k">implicit none</span>
<a name="ln-14"></a>
<a name="ln-15"></a><span class="cp">#include &quot;assert.i90&quot;</span>
<a name="ln-16"></a>
<a name="ln-17"></a><span class="k">private</span>
<a name="ln-18"></a>
<a name="ln-19"></a><span class="k">    type</span><span class="p">,</span> <span class="k">abstract</span><span class="p">,</span> <span class="k">extends</span><span class="p">(</span><span class="n">hdf5_handler_t</span><span class="p">)</span> <span class="kd">::</span> <span class="n">hdf5_dataset_per_process_handler_t</span>
<a name="ln-20"></a>    <span class="c">!-----------------------------------------------------------------</span>
<a name="ln-21"></a>    <span class="c">!&lt; HDF5 dataset per process handler</span>
<a name="ln-22"></a>    <span class="c">!----------------------------------------------------------------- </span>
<a name="ln-23"></a>    <span class="k">contains</span>
<a name="ln-24"></a><span class="k">    private</span>
<a name="ln-25"></a><span class="k">        procedure</span>         <span class="kd">::</span> <span class="n">CalculateAttributeDimensions</span> <span class="o">=&gt;</span> <span class="n">hdf5_dataset_per_process_handler_CalculateAttributeDimensions</span>
<a name="ln-26"></a>        <span class="k">procedure</span>         <span class="kd">::</span> <span class="n">WriteMetadata_I4P</span>  <span class="o">=&gt;</span> <span class="n">hdf5_dataset_per_process_handler_WriteMetadata_I4P</span>
<a name="ln-27"></a>        <span class="k">procedure</span>         <span class="kd">::</span> <span class="n">WriteMetadata_I8P</span>  <span class="o">=&gt;</span> <span class="n">hdf5_dataset_per_process_handler_WriteMetadata_I8P</span>
<a name="ln-28"></a>        <span class="k">procedure</span>         <span class="kd">::</span> <span class="n">WriteMetadata_R4P</span>  <span class="o">=&gt;</span> <span class="n">hdf5_dataset_per_process_handler_WriteMetadata_R4P</span>
<a name="ln-29"></a>        <span class="k">procedure</span>         <span class="kd">::</span> <span class="n">WriteMetadata_R8P</span>  <span class="o">=&gt;</span> <span class="n">hdf5_dataset_per_process_handler_WriteMetadata_R8P</span>
<a name="ln-30"></a>        <span class="k">procedure</span>         <span class="kd">::</span> <span class="n">WriteData_I4P</span>      <span class="o">=&gt;</span> <span class="n">hdf5_dataset_per_process_handler_WriteData_I4P</span>
<a name="ln-31"></a>        <span class="k">procedure</span>         <span class="kd">::</span> <span class="n">WriteData_I8P</span>      <span class="o">=&gt;</span> <span class="n">hdf5_dataset_per_process_handler_WriteData_I8P</span>
<a name="ln-32"></a>        <span class="k">procedure</span>         <span class="kd">::</span> <span class="n">WriteData_R4P</span>      <span class="o">=&gt;</span> <span class="n">hdf5_dataset_per_process_handler_WriteData_R4P</span>
<a name="ln-33"></a>        <span class="k">procedure</span>         <span class="kd">::</span> <span class="n">WriteData_R8P</span>      <span class="o">=&gt;</span> <span class="n">hdf5_dataset_per_process_handler_WriteData_R8P</span>
<a name="ln-34"></a>        <span class="k">procedure</span>         <span class="kd">::</span> <span class="n">ReadDataset_I4P</span>    <span class="o">=&gt;</span> <span class="n">hdf5_dataset_per_process_handler_ReadDataset_I4P</span>
<a name="ln-35"></a>        <span class="k">procedure</span>         <span class="kd">::</span> <span class="n">ReadDataset_I8P</span>    <span class="o">=&gt;</span> <span class="n">hdf5_dataset_per_process_handler_ReadDataset_I8P</span>
<a name="ln-36"></a>        <span class="k">procedure</span>         <span class="kd">::</span> <span class="n">ReadDataset_R4P</span>    <span class="o">=&gt;</span> <span class="n">hdf5_dataset_per_process_handler_ReadDataset_R4P</span>
<a name="ln-37"></a>        <span class="k">procedure</span>         <span class="kd">::</span> <span class="n">ReadDataset_R8P</span>    <span class="o">=&gt;</span> <span class="n">hdf5_dataset_per_process_handler_ReadDataset_R8P</span>
<a name="ln-38"></a>        <span class="k">procedure</span>         <span class="kd">::</span> <span class="n">WriteAttribute_I4P</span> <span class="o">=&gt;</span> <span class="n">hdf5_dataset_per_process_handler_WriteAttribute_I4P</span>
<a name="ln-39"></a>        <span class="k">procedure</span>         <span class="kd">::</span> <span class="n">WriteAttribute_I8P</span> <span class="o">=&gt;</span> <span class="n">hdf5_dataset_per_process_handler_WriteAttribute_I8P</span>
<a name="ln-40"></a>        <span class="k">procedure</span>         <span class="kd">::</span> <span class="n">WriteAttribute_R4P</span> <span class="o">=&gt;</span> <span class="n">hdf5_dataset_per_process_handler_WriteAttribute_R4P</span>
<a name="ln-41"></a>        <span class="k">procedure</span>         <span class="kd">::</span> <span class="n">WriteAttribute_R8P</span> <span class="o">=&gt;</span> <span class="n">hdf5_dataset_per_process_handler_WriteAttribute_R8P</span>
<a name="ln-42"></a>        <span class="k">procedure</span>         <span class="kd">::</span> <span class="n">ReadAttribute_I4P</span>  <span class="o">=&gt;</span> <span class="n">hdf5_dataset_per_process_handler_ReadAttribute_I4P</span>
<a name="ln-43"></a>        <span class="k">procedure</span>         <span class="kd">::</span> <span class="n">ReadAttribute_I8P</span>  <span class="o">=&gt;</span> <span class="n">hdf5_dataset_per_process_handler_ReadAttribute_I8P</span>
<a name="ln-44"></a>        <span class="k">procedure</span>         <span class="kd">::</span> <span class="n">ReadAttribute_R4P</span>  <span class="o">=&gt;</span> <span class="n">hdf5_dataset_per_process_handler_ReadAttribute_R4P</span>
<a name="ln-45"></a>        <span class="k">procedure</span>         <span class="kd">::</span> <span class="n">ReadAttribute_R8P</span>  <span class="o">=&gt;</span> <span class="n">hdf5_dataset_per_process_handler_ReadAttribute_R8P</span>
<a name="ln-46"></a>        <span class="k">generic</span><span class="p">,</span> <span class="k">public</span>   <span class="kd">::</span> <span class="n">WriteMetadata</span>      <span class="o">=&gt;</span> <span class="n">WriteMetadata_I4P</span><span class="p">,</span> <span class="p">&amp;</span>
<a name="ln-47"></a>                                                   <span class="n">WriteMetadata_I8P</span><span class="p">,</span> <span class="p">&amp;</span>
<a name="ln-48"></a>                                                   <span class="n">WriteMetadata_R4P</span><span class="p">,</span> <span class="p">&amp;</span>
<a name="ln-49"></a>                                                   <span class="n">WriteMetadata_R8P</span>
<a name="ln-50"></a>        <span class="k">generic</span><span class="p">,</span> <span class="k">public</span>   <span class="kd">::</span> <span class="n">WriteData</span>          <span class="o">=&gt;</span> <span class="n">WriteData_I4P</span><span class="p">,</span> <span class="p">&amp;</span>
<a name="ln-51"></a>                                                   <span class="n">WriteData_I8P</span><span class="p">,</span> <span class="p">&amp;</span>
<a name="ln-52"></a>                                                   <span class="n">WriteData_R4P</span><span class="p">,</span> <span class="p">&amp;</span>
<a name="ln-53"></a>                                                   <span class="n">WriteData_R8P</span>
<a name="ln-54"></a>        <span class="k">generic</span><span class="p">,</span> <span class="k">public</span>   <span class="kd">::</span> <span class="n">ReadDataset</span>        <span class="o">=&gt;</span> <span class="n">ReadDataset_I4P</span><span class="p">,</span> <span class="p">&amp;</span>
<a name="ln-55"></a>                                                   <span class="n">ReadDataset_I8P</span><span class="p">,</span> <span class="p">&amp;</span>
<a name="ln-56"></a>                                                   <span class="n">ReadDataset_R4P</span><span class="p">,</span> <span class="p">&amp;</span>
<a name="ln-57"></a>                                                   <span class="n">ReadDataset_R8P</span>
<a name="ln-58"></a>
<a name="ln-59"></a>    <span class="k">end type </span><span class="n">hdf5_dataset_per_process_handler_t</span>
<a name="ln-60"></a>
<a name="ln-61"></a><span class="k">public</span> <span class="kd">::</span> <span class="n">hdf5_dataset_per_process_handler_t</span>
<a name="ln-62"></a>
<a name="ln-63"></a><span class="cp">#ifndef ENABLE_HDF5</span>
<a name="ln-64"></a><span class="k">public</span> <span class="kd">::</span> <span class="n">HID_T</span>
<a name="ln-65"></a><span class="k">public</span> <span class="kd">::</span> <span class="n">HSIZE_T</span>
<a name="ln-66"></a><span class="cp">#endif</span>
<a name="ln-67"></a>
<a name="ln-68"></a><span class="k">contains</span>
<a name="ln-69"></a>
<a name="ln-70"></a>
<a name="ln-71"></a><span class="k">    subroutine </span><span class="n">hdf5_dataset_per_process_handler_CalculateAttributeDimensions</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">GridID</span><span class="p">,</span> <span class="n">Center</span><span class="p">,</span> <span class="n">LocalNumberOfData</span><span class="p">)</span>
<a name="ln-72"></a>    <span class="c">!-----------------------------------------------------------------</span>
<a name="ln-73"></a>    <span class="c">!&lt; Calculate hyperslab dimensions for the dataset per process strategy</span>
<a name="ln-74"></a>    <span class="c">!----------------------------------------------------------------- </span>
<a name="ln-75"></a>        <span class="k">class</span><span class="p">(</span><span class="n">hdf5_dataset_per_process_handler_t</span><span class="p">),</span>  <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span>  <span class="kd">::</span> <span class="n">this</span>                <span class="c">!&lt; HDF5 dataset per process handler</span>
<a name="ln-76"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">I4P</span><span class="p">),</span>                               <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span>  <span class="kd">::</span> <span class="n">GridID</span>              <span class="c">!&lt; Index to loop on GridID&#39;s</span>
<a name="ln-77"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">I4P</span><span class="p">),</span>                               <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span>  <span class="kd">::</span> <span class="n">Center</span>              <span class="c">!&lt; Attribute center at (Node, Cell, etc.)</span>
<a name="ln-78"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">OUT</span><span class="p">)</span> <span class="kd">::</span> <span class="n">LocalNumberOfData</span>   <span class="c">!&lt; Local number of data</span>
<a name="ln-79"></a>        <span class="k">class</span><span class="p">(</span><span class="n">spatial_grid_descriptor_t</span><span class="p">),</span> <span class="k">pointer</span>               <span class="kd">::</span> <span class="n">SpatialGridDescriptor</span> <span class="c">!&lt; Spatial grid descriptor</span>
<a name="ln-80"></a>    <span class="c">!----------------------------------------------------------------- </span>
<a name="ln-81"></a>    <span class="c">!&lt; @TODO: face and edge attributes</span>
<a name="ln-82"></a><span class="cp">#ifdef ENABLE_HDF5</span>
<a name="ln-83"></a>        <span class="n">SpatialGridDescriptor</span> <span class="o">=&gt;</span> <span class="n">this</span><span class="p">%</span><span class="n">GetSpatialGridDescriptor</span><span class="p">()</span>
<a name="ln-84"></a>        <span class="n">assert</span><span class="p">(</span><span class="nb">associated</span><span class="p">(</span><span class="n">SpatialGridDescriptor</span><span class="p">))</span>
<a name="ln-85"></a>        <span class="k">select case</span><span class="p">(</span><span class="n">Center</span><span class="p">)</span>
<a name="ln-86"></a>            <span class="k">case</span> <span class="p">(</span><span class="n">XDMF_ATTRIBUTE_CENTER_NODE</span><span class="p">)</span>
<a name="ln-87"></a>                <span class="n">LocalNumberOfData</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">SpatialGridDescriptor</span><span class="p">%</span><span class="n">GetNumberOfNodesPerGridID</span><span class="p">(</span><span class="n">ID</span><span class="o">=</span><span class="n">GridID</span><span class="p">),</span><span class="n">HSIZE_T</span><span class="p">)</span>
<a name="ln-88"></a>            <span class="k">case</span> <span class="p">(</span><span class="n">XDMF_ATTRIBUTE_CENTER_CELL</span><span class="p">)</span>
<a name="ln-89"></a>                <span class="n">LocalNumberOfData</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">SpatialGridDescriptor</span><span class="p">%</span><span class="n">GetNumberOfElementsPerGridID</span><span class="p">(</span><span class="n">ID</span><span class="o">=</span><span class="n">GridID</span><span class="p">),</span><span class="n">HSIZE_T</span><span class="p">)</span>
<a name="ln-90"></a>            <span class="k">case</span> <span class="p">(</span><span class="n">XDMF_ATTRIBUTE_CENTER_GRID</span><span class="p">)</span>
<a name="ln-91"></a>                <span class="n">LocalNumberOfData</span> <span class="o">=</span> <span class="mi">1_HSIZE_T</span>
<a name="ln-92"></a>            <span class="k">case </span><span class="n">Default</span>
<a name="ln-93"></a>                <span class="n">LocalNumberOfData</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">SpatialGridDescriptor</span><span class="p">%</span><span class="n">GetNumberOfNodesPerGridID</span><span class="p">(</span><span class="n">ID</span><span class="o">=</span><span class="n">GridID</span><span class="p">),</span><span class="n">HSIZE_T</span><span class="p">)</span>
<a name="ln-94"></a>        <span class="k">end select</span>
<a name="ln-95"></a><span class="cp">#endif</span>
<a name="ln-96"></a>    <span class="k">end subroutine </span><span class="n">hdf5_dataset_per_process_handler_CalculateAttributeDimensions</span>
<a name="ln-97"></a>
<a name="ln-98"></a>
<a name="ln-99"></a>    <span class="k">subroutine </span><span class="n">hdf5_dataset_per_process_handler_WriteMetaData_I4P</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">DatasetName</span><span class="p">,</span> <span class="n">DatasetDims</span><span class="p">,</span> <span class="n">HyperSlabOffset</span><span class="p">,</span> <span class="n">HyperSlabSize</span><span class="p">,</span> <span class="n">Values</span><span class="p">)</span>
<a name="ln-100"></a>    <span class="c">!-----------------------------------------------------------------</span>
<a name="ln-101"></a>    <span class="c">!&lt; Writes I4P Metadata to a HDF5 file for the dataset per process strategy</span>
<a name="ln-102"></a>    <span class="c">!----------------------------------------------------------------- </span>
<a name="ln-103"></a>        <span class="k">class</span><span class="p">(</span><span class="n">hdf5_dataset_per_process_handler_t</span><span class="p">),</span>  <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">this</span>                <span class="c">!&lt; HDF5 dataset per process handler</span>
<a name="ln-104"></a>        <span class="kt">character</span><span class="p">(</span><span class="nb">len</span><span class="o">=*</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">DatasetName</span>         <span class="c">!&lt; Dataset name</span>
<a name="ln-105"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">DatasetDims</span><span class="p">(:)</span>      <span class="c">!&lt; Dataset dimensions</span>
<a name="ln-106"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">HyperSlabOffset</span><span class="p">(:)</span>  <span class="c">!&lt; Hyperslab offset</span>
<a name="ln-107"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">HyperSlabSize</span><span class="p">(:)</span>    <span class="c">!&lt; Hyperslab size</span>
<a name="ln-108"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">I4P</span><span class="p">),</span>                               <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">Values</span><span class="p">(:)</span>           <span class="c">!&lt; I4P Dataset values</span>
<a name="ln-109"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HID_T</span><span class="p">)</span>                                         <span class="kd">::</span> <span class="n">filespace</span>           <span class="c">!&lt; HDF5 file Dataspace identifier</span>
<a name="ln-110"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HID_T</span><span class="p">)</span>                                         <span class="kd">::</span> <span class="n">plist_id</span>            <span class="c">!&lt; HDF5 Property list identifier </span>
<a name="ln-111"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HID_T</span><span class="p">)</span>                                         <span class="kd">::</span> <span class="n">dset_id</span>             <span class="c">!&lt; HDF5 Dataset identifier </span>
<a name="ln-112"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">I4P</span><span class="p">)</span>                                           <span class="kd">::</span> <span class="n">hdferror</span>            <span class="c">!&lt; HDF5 error code</span>
<a name="ln-113"></a>    <span class="c">!-----------------------------------------------------------------</span>
<a name="ln-114"></a>        <span class="c">!&lt; @Note: Fixed rank 1?</span>
<a name="ln-115"></a>        <span class="c">!&lt; @Note: Fixed dataset name?</span>
<a name="ln-116"></a>        <span class="c">!&lt; @Note: Fixed rank 1?</span>
<a name="ln-117"></a>        <span class="n">assert</span><span class="p">(</span><span class="n">this</span><span class="p">%</span><span class="n">IsOpen</span><span class="p">()</span> <span class="p">.</span><span class="nb">and</span><span class="p">.</span> <span class="n">this</span><span class="p">%</span><span class="n">GetAction</span><span class="p">()</span> <span class="o">==</span> <span class="n">XDMF_ACTION_WRITE</span><span class="p">)</span>
<a name="ln-118"></a><span class="cp">#ifdef ENABLE_HDF5</span>
<a name="ln-119"></a>        <span class="c">! Create filespace</span>
<a name="ln-120"></a>        <span class="k">call </span><span class="n">H5Screate_simple_f</span><span class="p">(</span><span class="n">rank</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span>                     <span class="p">&amp;</span>
<a name="ln-121"></a>                <span class="n">dims</span>     <span class="o">=</span> <span class="n">DatasetDims</span><span class="p">,</span>                       <span class="p">&amp;</span>
<a name="ln-122"></a>                <span class="n">space_id</span> <span class="o">=</span> <span class="n">filespace</span><span class="p">,</span>                         <span class="p">&amp;</span>
<a name="ln-123"></a>                <span class="n">hdferr</span>   <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-124"></a>        <span class="c">! Create dataset </span>
<a name="ln-125"></a>        <span class="k">call </span><span class="n">H5Dcreate_f</span><span class="p">(</span><span class="n">loc_id</span> <span class="o">=</span> <span class="n">this</span><span class="p">%</span><span class="n">GetFileID</span><span class="p">(),</span>         <span class="p">&amp;</span>
<a name="ln-126"></a>                <span class="n">name</span>     <span class="o">=</span> <span class="s1">&#39;/&#39;</span><span class="o">//</span><span class="nb">trim</span><span class="p">(</span><span class="nb">adjustl</span><span class="p">(</span><span class="n">DatasetName</span><span class="p">)),</span> <span class="p">&amp;</span>
<a name="ln-127"></a>                <span class="n">type_id</span>  <span class="o">=</span> <span class="n">H5T_NATIVE_INTEGER</span><span class="p">,</span>              <span class="p">&amp;</span>
<a name="ln-128"></a>                <span class="n">space_id</span> <span class="o">=</span> <span class="n">filespace</span><span class="p">,</span>                       <span class="p">&amp;</span>
<a name="ln-129"></a>                <span class="n">dset_id</span>  <span class="o">=</span> <span class="n">dset_id</span><span class="p">,</span>                         <span class="p">&amp;</span> 
<a name="ln-130"></a>                <span class="n">hdferr</span>   <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-131"></a>        <span class="c">! Close dataset and filespace</span>
<a name="ln-132"></a>        <span class="k">call </span><span class="n">H5Dclose_f</span><span class="p">(</span><span class="n">dset_id</span>  <span class="o">=</span> <span class="n">dset_id</span><span class="p">,</span>   <span class="n">hdferr</span> <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-133"></a>        <span class="k">call </span><span class="n">H5Sclose_f</span><span class="p">(</span><span class="n">space_id</span> <span class="o">=</span> <span class="n">filespace</span><span class="p">,</span> <span class="n">hdferr</span> <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-134"></a><span class="cp">#endif</span>
<a name="ln-135"></a>    <span class="k">end subroutine </span><span class="n">hdf5_dataset_per_process_handler_WriteMetadata_I4P</span>
<a name="ln-136"></a>
<a name="ln-137"></a>
<a name="ln-138"></a>    <span class="k">subroutine </span><span class="n">hdf5_dataset_per_process_handler_WriteData_I4P</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">DatasetName</span><span class="p">,</span> <span class="n">DatasetDims</span><span class="p">,</span> <span class="n">HyperSlabOffset</span><span class="p">,</span> <span class="n">HyperSlabSize</span><span class="p">,</span> <span class="n">Values</span><span class="p">)</span>
<a name="ln-139"></a>    <span class="c">!-----------------------------------------------------------------</span>
<a name="ln-140"></a>    <span class="c">!&lt; Writes I4P data to a HDF5 file for the dataset per process strategy</span>
<a name="ln-141"></a>    <span class="c">!----------------------------------------------------------------- </span>
<a name="ln-142"></a>        <span class="k">class</span><span class="p">(</span><span class="n">hdf5_dataset_per_process_handler_t</span><span class="p">),</span>  <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">this</span>                <span class="c">!&lt; HDF5 dataset per process handler</span>
<a name="ln-143"></a>        <span class="kt">character</span><span class="p">(</span><span class="nb">len</span><span class="o">=*</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">DatasetName</span>         <span class="c">!&lt; Dataset name</span>
<a name="ln-144"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">DatasetDims</span><span class="p">(:)</span>      <span class="c">!&lt; Dataset dimensions</span>
<a name="ln-145"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">HyperSlabOffset</span><span class="p">(:)</span>  <span class="c">!&lt; Hyperslab offset</span>
<a name="ln-146"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">HyperSlabSize</span><span class="p">(:)</span>    <span class="c">!&lt; Hyperslab size</span>
<a name="ln-147"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">I4P</span><span class="p">),</span>                               <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">Values</span><span class="p">(:)</span>           <span class="c">!&lt; I4P Dataset values</span>
<a name="ln-148"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HID_T</span><span class="p">)</span>                                         <span class="kd">::</span> <span class="n">filespace</span>           <span class="c">!&lt; HDF5 file Dataspace identifier</span>
<a name="ln-149"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HID_T</span><span class="p">)</span>                                         <span class="kd">::</span> <span class="n">plist_id</span>            <span class="c">!&lt; HDF5 Property list identifier </span>
<a name="ln-150"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HID_T</span><span class="p">)</span>                                         <span class="kd">::</span> <span class="n">dset_id</span>             <span class="c">!&lt; HDF5 Dataset identifier </span>
<a name="ln-151"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">I4P</span><span class="p">)</span>                                           <span class="kd">::</span> <span class="n">hdferror</span>            <span class="c">!&lt; HDF5 error code</span>
<a name="ln-152"></a>        <span class="k">type</span><span class="p">(</span><span class="n">mpi_env_t</span><span class="p">),</span> <span class="k">pointer</span>                               <span class="kd">::</span> <span class="n">MPIEnvironment</span>
<a name="ln-153"></a><span class="cp">#ifdef PRINT_IO_TIMES</span>
<a name="ln-154"></a>        <span class="kt">real</span><span class="p">(</span><span class="n">R8P</span><span class="p">)</span>                                              <span class="kd">::</span> <span class="n">start_time</span>
<a name="ln-155"></a>        <span class="kt">real</span><span class="p">(</span><span class="n">R8P</span><span class="p">)</span>                                              <span class="kd">::</span> <span class="n">end_time</span>
<a name="ln-156"></a><span class="cp">#endif</span>
<a name="ln-157"></a>    <span class="c">!-----------------------------------------------------------------</span>
<a name="ln-158"></a>        <span class="c">!&lt; @Note: Fixed rank 1?</span>
<a name="ln-159"></a>        <span class="c">!&lt; @Note: Fixed dataset name?</span>
<a name="ln-160"></a>        <span class="c">!&lt; @Note: Fixed rank 1?</span>
<a name="ln-161"></a>        <span class="n">assert</span><span class="p">(</span><span class="n">this</span><span class="p">%</span><span class="n">IsOpen</span><span class="p">()</span> <span class="p">.</span><span class="nb">and</span><span class="p">.</span> <span class="n">this</span><span class="p">%</span><span class="n">GetAction</span><span class="p">()</span> <span class="o">==</span> <span class="n">XDMF_ACTION_WRITE</span><span class="p">)</span>
<a name="ln-162"></a><span class="cp">#ifdef ENABLE_HDF5</span>
<a name="ln-163"></a>        <span class="k">nullify</span><span class="p">(</span><span class="n">MPIEnvironment</span><span class="p">)</span>
<a name="ln-164"></a>        <span class="n">MPIEnvironment</span> <span class="o">=&gt;</span> <span class="n">this</span><span class="p">%</span><span class="n">GetMPIEnvironment</span><span class="p">()</span>
<a name="ln-165"></a>        <span class="n">assert</span><span class="p">(</span><span class="nb">associated</span><span class="p">(</span><span class="n">MPIEnvironment</span><span class="p">))</span>
<a name="ln-166"></a><span class="cp">#ifdef PRINT_IO_TIMES</span>
<a name="ln-167"></a>        <span class="n">start_time</span> <span class="o">=</span> <span class="n">MPIEnvironment</span><span class="p">%</span><span class="n">mpi_wtime</span><span class="p">()</span>
<a name="ln-168"></a><span class="cp">#endif</span>
<a name="ln-169"></a>        <span class="c">! Create the dataset with default properties.</span>
<a name="ln-170"></a>        <span class="k">call </span><span class="n">H5Pcreate_f</span><span class="p">(</span><span class="n">H5P_DATASET_XFER_F</span><span class="p">,</span> <span class="n">prp_id</span> <span class="o">=</span> <span class="n">plist_id</span><span class="p">,</span> <span class="n">hdferr</span><span class="o">=</span><span class="n">hdferror</span><span class="p">)</span> 
<a name="ln-171"></a>        <span class="c">! Open dataset</span>
<a name="ln-172"></a>        <span class="k">call </span><span class="n">H5Dopen_f</span><span class="p">(</span><span class="n">loc_id</span> <span class="o">=</span> <span class="n">this</span><span class="p">%</span><span class="n">GetFileID</span><span class="p">(),</span>          <span class="p">&amp;</span>
<a name="ln-173"></a>                <span class="n">name</span>    <span class="o">=</span> <span class="s1">&#39;/&#39;</span><span class="o">//</span><span class="nb">trim</span><span class="p">(</span><span class="nb">adjustl</span><span class="p">(</span><span class="n">DatasetName</span><span class="p">)),</span> <span class="p">&amp;</span>
<a name="ln-174"></a>                <span class="n">dset_id</span> <span class="o">=</span> <span class="n">dset_id</span><span class="p">,</span>                         <span class="p">&amp;</span>
<a name="ln-175"></a>                <span class="n">hdferr</span>  <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span> 
<a name="ln-176"></a><span class="cp">#if defined(ENABLE_MPI) &amp;&amp; defined(ENABLE_PARALLEL_HDF5)</span>
<a name="ln-177"></a>        <span class="c">! Set MPIO data transfer mode to COLLECTIVE</span>
<a name="ln-178"></a>        <span class="k">if</span><span class="p">(</span><span class="n">MPIEnvironment</span><span class="p">%</span><span class="n">is_Parallel</span><span class="p">())</span> <span class="p">&amp;</span>
<a name="ln-179"></a>            <span class="k">call </span><span class="n">H5Pset_dxpl_mpio_f</span><span class="p">(</span><span class="n">prp_id</span> <span class="o">=</span> <span class="n">plist_id</span><span class="p">,</span> <span class="n">data_xfer_mode</span> <span class="o">=</span> <span class="n">H5FD_MPIO_COLLECTIVE_F</span><span class="p">,</span> <span class="n">hdferr</span> <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-180"></a><span class="cp">#endif</span>
<a name="ln-181"></a>        <span class="c">! Write data</span>
<a name="ln-182"></a>        <span class="k">call </span><span class="n">H5Dwrite_f</span><span class="p">(</span><span class="n">dset_id</span> <span class="o">=</span> <span class="n">dset_id</span><span class="p">,</span>           <span class="p">&amp;</span>
<a name="ln-183"></a>                <span class="n">mem_type_id</span>   <span class="o">=</span> <span class="n">H5T_NATIVE_INTEGER</span><span class="p">,</span>  <span class="p">&amp;</span>
<a name="ln-184"></a>                <span class="n">buf</span>           <span class="o">=</span> <span class="n">Values</span><span class="p">,</span>              <span class="p">&amp;</span>
<a name="ln-185"></a>                <span class="n">dims</span>          <span class="o">=</span> <span class="n">HyperSlabSize</span><span class="p">,</span>       <span class="p">&amp;</span>
<a name="ln-186"></a>                <span class="n">hdferr</span>        <span class="o">=</span> <span class="n">hdferror</span><span class="p">,</span>            <span class="p">&amp;</span>
<a name="ln-187"></a>                <span class="n">xfer_prp</span>      <span class="o">=</span> <span class="n">plist_id</span><span class="p">)</span>
<a name="ln-188"></a>        <span class="c">! Close data space, dataset, property list .</span>
<a name="ln-189"></a>        <span class="k">call </span><span class="n">H5Dclose_f</span><span class="p">(</span><span class="n">dset_id</span>  <span class="o">=</span> <span class="n">dset_id</span><span class="p">,</span>   <span class="n">hdferr</span> <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-190"></a>        <span class="k">call </span><span class="n">H5Pclose_f</span><span class="p">(</span><span class="n">prp_id</span>   <span class="o">=</span> <span class="n">plist_id</span><span class="p">,</span>  <span class="n">hdferr</span> <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-191"></a><span class="cp">#ifdef FORCE_FLUSH</span>
<a name="ln-192"></a>        <span class="k">call </span><span class="n">H5FFLUSH_f</span><span class="p">(</span><span class="n">object_id</span> <span class="o">=</span> <span class="n">this</span><span class="p">%</span><span class="n">GetFileID</span><span class="p">(),</span> <span class="n">scope</span> <span class="o">=</span> <span class="n">H5F_SCOPE_LOCAL_F</span><span class="p">,</span> <span class="n">hdferr</span> <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-193"></a><span class="cp">#endif</span>
<a name="ln-194"></a><span class="cp">#ifdef PRINT_IO_TIMES</span>
<a name="ln-195"></a>        <span class="n">end_time</span> <span class="o">=</span> <span class="n">MPIEnvironment</span><span class="p">%</span><span class="n">mpi_wtime</span><span class="p">()</span>
<a name="ln-196"></a>        <span class="k">write</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="s1">&#39;(A)&#39;</span><span class="p">)</span> <span class="s1">&#39;[WriteData I4P] Dataset: &#39;</span><span class="o">//</span><span class="n">DatasetName</span><span class="o">//</span><span class="p">&amp;</span>
<a name="ln-197"></a>                       <span class="s1">&#39; Size: &#39;</span><span class="o">//</span><span class="nb">trim</span><span class="p">(</span><span class="nb">adjustl</span><span class="p">(</span><span class="n">str</span><span class="p">(</span><span class="n">no_sign</span><span class="o">=</span><span class="p">.</span><span class="n">true</span><span class="p">.,</span><span class="n">n</span><span class="o">=</span><span class="n">HyperSlabSize</span><span class="p">)))</span><span class="o">//</span><span class="p">&amp;</span>
<a name="ln-198"></a>                       <span class="s1">&#39; Time: &#39;</span><span class="o">//</span><span class="nb">trim</span><span class="p">(</span><span class="nb">adjustl</span><span class="p">(</span><span class="n">str</span><span class="p">(</span><span class="n">no_sign</span><span class="o">=</span><span class="p">.</span><span class="n">true</span><span class="p">.,</span><span class="n">n</span><span class="o">=</span><span class="n">end_time</span><span class="o">-</span><span class="n">start_time</span><span class="p">)))</span>
<a name="ln-199"></a><span class="cp">#endif</span>
<a name="ln-200"></a><span class="cp">#endif</span>
<a name="ln-201"></a>    <span class="k">end subroutine </span><span class="n">hdf5_dataset_per_process_handler_WriteData_I4P</span>
<a name="ln-202"></a>
<a name="ln-203"></a>
<a name="ln-204"></a>    <span class="k">subroutine </span><span class="n">hdf5_dataset_per_process_handler_WriteMetaData_I8P</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">DatasetName</span><span class="p">,</span> <span class="n">DatasetDims</span><span class="p">,</span> <span class="n">HyperSlabOffset</span><span class="p">,</span> <span class="n">HyperSlabSize</span><span class="p">,</span> <span class="n">Values</span><span class="p">)</span>
<a name="ln-205"></a>    <span class="c">!-----------------------------------------------------------------</span>
<a name="ln-206"></a>    <span class="c">!&lt; Writes I8P metadata to a HDF5 file for the dataset per process strategy</span>
<a name="ln-207"></a>    <span class="c">!----------------------------------------------------------------- </span>
<a name="ln-208"></a>        <span class="k">class</span><span class="p">(</span><span class="n">hdf5_dataset_per_process_handler_t</span><span class="p">),</span>  <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">this</span>                <span class="c">!&lt; HDF5 dataset per process handler</span>
<a name="ln-209"></a>        <span class="kt">character</span><span class="p">(</span><span class="nb">len</span><span class="o">=*</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">DatasetName</span>         <span class="c">!&lt; Dataset name</span>
<a name="ln-210"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">DatasetDims</span><span class="p">(:)</span>      <span class="c">!&lt; Dataset dimensions</span>
<a name="ln-211"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">HyperSlabOffset</span><span class="p">(:)</span>  <span class="c">!&lt; Hyperslab offset</span>
<a name="ln-212"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">HyperSlabSize</span><span class="p">(:)</span>    <span class="c">!&lt; Hyperslab size</span>
<a name="ln-213"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">I8P</span><span class="p">),</span>                               <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">Values</span><span class="p">(:)</span>           <span class="c">!&lt; I8P Dataset values</span>
<a name="ln-214"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HID_T</span><span class="p">)</span>                                         <span class="kd">::</span> <span class="n">filespace</span>           <span class="c">!&lt; HDF5 file Dataspace identifier</span>
<a name="ln-215"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HID_T</span><span class="p">)</span>                                         <span class="kd">::</span> <span class="n">plist_id</span>            <span class="c">!&lt; HDF5 Property list identifier </span>
<a name="ln-216"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HID_T</span><span class="p">)</span>                                         <span class="kd">::</span> <span class="n">dset_id</span>             <span class="c">!&lt; HDF5 Dataset identifier </span>
<a name="ln-217"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">I4P</span><span class="p">)</span>                                           <span class="kd">::</span> <span class="n">hdferror</span>            <span class="c">!&lt; HDF5 error code</span>
<a name="ln-218"></a>    <span class="c">!-----------------------------------------------------------------</span>
<a name="ln-219"></a>        <span class="c">!&lt; @Note: Fixed rank 1?</span>
<a name="ln-220"></a>        <span class="c">!&lt; @Note: Fixed dataset name?</span>
<a name="ln-221"></a>        <span class="c">!&lt; @Note: Fixed rank 1?</span>
<a name="ln-222"></a>        <span class="n">assert</span><span class="p">(</span><span class="n">this</span><span class="p">%</span><span class="n">IsOpen</span><span class="p">()</span> <span class="p">.</span><span class="nb">and</span><span class="p">.</span> <span class="n">this</span><span class="p">%</span><span class="n">GetAction</span><span class="p">()</span> <span class="o">==</span> <span class="n">XDMF_ACTION_WRITE</span><span class="p">)</span>
<a name="ln-223"></a><span class="cp">#ifdef ENABLE_HDF5</span>
<a name="ln-224"></a>        <span class="c">! Create filespace</span>
<a name="ln-225"></a>        <span class="k">call </span><span class="n">H5Screate_simple_f</span><span class="p">(</span><span class="n">rank</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span>                     <span class="p">&amp;</span>
<a name="ln-226"></a>                <span class="n">dims</span>     <span class="o">=</span> <span class="n">DatasetDims</span><span class="p">,</span>                       <span class="p">&amp;</span>
<a name="ln-227"></a>                <span class="n">space_id</span> <span class="o">=</span> <span class="n">filespace</span><span class="p">,</span>                         <span class="p">&amp;</span>
<a name="ln-228"></a>                <span class="n">hdferr</span>   <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-229"></a>        <span class="c">! Create dataset </span>
<a name="ln-230"></a>        <span class="k">call </span><span class="n">H5Dcreate_f</span><span class="p">(</span><span class="n">loc_id</span> <span class="o">=</span> <span class="n">this</span><span class="p">%</span><span class="n">GetFileID</span><span class="p">(),</span>         <span class="p">&amp;</span>
<a name="ln-231"></a>                <span class="n">name</span>     <span class="o">=</span> <span class="s1">&#39;/&#39;</span><span class="o">//</span><span class="nb">trim</span><span class="p">(</span><span class="nb">adjustl</span><span class="p">(</span><span class="n">DatasetName</span><span class="p">)),</span> <span class="p">&amp;</span>
<a name="ln-232"></a>                <span class="n">type_id</span>  <span class="o">=</span> <span class="n">H5T_NATIVE_INTEGER</span><span class="p">,</span>              <span class="p">&amp;</span>
<a name="ln-233"></a>                <span class="n">space_id</span> <span class="o">=</span> <span class="n">filespace</span><span class="p">,</span>                       <span class="p">&amp;</span>
<a name="ln-234"></a>                <span class="n">dset_id</span>  <span class="o">=</span> <span class="n">dset_id</span><span class="p">,</span>                         <span class="p">&amp;</span> 
<a name="ln-235"></a>                <span class="n">hdferr</span>   <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-236"></a>        <span class="c">! Close dataset and filespace</span>
<a name="ln-237"></a>        <span class="k">call </span><span class="n">H5Dclose_f</span><span class="p">(</span><span class="n">dset_id</span>  <span class="o">=</span> <span class="n">dset_id</span><span class="p">,</span>   <span class="n">hdferr</span> <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-238"></a>        <span class="k">call </span><span class="n">H5Sclose_f</span><span class="p">(</span><span class="n">space_id</span> <span class="o">=</span> <span class="n">filespace</span><span class="p">,</span> <span class="n">hdferr</span> <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-239"></a><span class="cp">#endif</span>
<a name="ln-240"></a>    <span class="k">end subroutine </span><span class="n">hdf5_dataset_per_process_handler_WriteMetaData_I8P</span>
<a name="ln-241"></a>
<a name="ln-242"></a>
<a name="ln-243"></a>    <span class="k">subroutine </span><span class="n">hdf5_dataset_per_process_handler_WriteData_I8P</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">DatasetName</span><span class="p">,</span> <span class="n">DatasetDims</span><span class="p">,</span> <span class="n">HyperSlabOffset</span><span class="p">,</span> <span class="n">HyperSlabSize</span><span class="p">,</span> <span class="n">Values</span><span class="p">)</span>
<a name="ln-244"></a>    <span class="c">!-----------------------------------------------------------------</span>
<a name="ln-245"></a>    <span class="c">!&lt; Writes I8P metadata to a HDF5 file for the dataset per process strategy</span>
<a name="ln-246"></a>    <span class="c">!----------------------------------------------------------------- </span>
<a name="ln-247"></a>        <span class="k">class</span><span class="p">(</span><span class="n">hdf5_dataset_per_process_handler_t</span><span class="p">),</span>  <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">this</span>                <span class="c">!&lt; HDF5 dataset per process handler</span>
<a name="ln-248"></a>        <span class="kt">character</span><span class="p">(</span><span class="nb">len</span><span class="o">=*</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">DatasetName</span>         <span class="c">!&lt; Dataset name</span>
<a name="ln-249"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">DatasetDims</span><span class="p">(:)</span>      <span class="c">!&lt; Dataset dimensions</span>
<a name="ln-250"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">HyperSlabOffset</span><span class="p">(:)</span>  <span class="c">!&lt; Hyperslab offset</span>
<a name="ln-251"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">HyperSlabSize</span><span class="p">(:)</span>    <span class="c">!&lt; Hyperslab size</span>
<a name="ln-252"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">I8P</span><span class="p">),</span>                               <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">Values</span><span class="p">(:)</span>           <span class="c">!&lt; I8P Dataset values</span>
<a name="ln-253"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HID_T</span><span class="p">)</span>                                         <span class="kd">::</span> <span class="n">filespace</span>           <span class="c">!&lt; HDF5 file Dataspace identifier</span>
<a name="ln-254"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HID_T</span><span class="p">)</span>                                         <span class="kd">::</span> <span class="n">plist_id</span>            <span class="c">!&lt; HDF5 Property list identifier </span>
<a name="ln-255"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HID_T</span><span class="p">)</span>                                         <span class="kd">::</span> <span class="n">dset_id</span>             <span class="c">!&lt; HDF5 Dataset identifier </span>
<a name="ln-256"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">I4P</span><span class="p">)</span>                                           <span class="kd">::</span> <span class="n">hdferror</span>            <span class="c">!&lt; HDF5 error code</span>
<a name="ln-257"></a>        <span class="k">type</span><span class="p">(</span><span class="n">mpi_env_t</span><span class="p">),</span> <span class="k">pointer</span>                               <span class="kd">::</span> <span class="n">MPIEnvironment</span>
<a name="ln-258"></a><span class="cp">#ifdef PRINT_IO_TIMES</span>
<a name="ln-259"></a>        <span class="kt">real</span><span class="p">(</span><span class="n">R8P</span><span class="p">)</span>                                              <span class="kd">::</span> <span class="n">start_time</span>
<a name="ln-260"></a>        <span class="kt">real</span><span class="p">(</span><span class="n">R8P</span><span class="p">)</span>                                              <span class="kd">::</span> <span class="n">end_time</span>
<a name="ln-261"></a><span class="cp">#endif</span>
<a name="ln-262"></a>    <span class="c">!-----------------------------------------------------------------</span>
<a name="ln-263"></a>        <span class="c">!&lt; @Note: Fixed rank 1?</span>
<a name="ln-264"></a>        <span class="c">!&lt; @Note: Fixed dataset name?</span>
<a name="ln-265"></a>        <span class="c">!&lt; @Note: Fixed rank 1?</span>
<a name="ln-266"></a>        <span class="n">assert</span><span class="p">(</span><span class="n">this</span><span class="p">%</span><span class="n">IsOpen</span><span class="p">()</span> <span class="p">.</span><span class="nb">and</span><span class="p">.</span> <span class="n">this</span><span class="p">%</span><span class="n">GetAction</span><span class="p">()</span> <span class="o">==</span> <span class="n">XDMF_ACTION_WRITE</span><span class="p">)</span>
<a name="ln-267"></a><span class="cp">#ifdef ENABLE_HDF5</span>
<a name="ln-268"></a>        <span class="k">nullify</span><span class="p">(</span><span class="n">MPIEnvironment</span><span class="p">)</span>
<a name="ln-269"></a>        <span class="n">MPIEnvironment</span> <span class="o">=&gt;</span> <span class="n">this</span><span class="p">%</span><span class="n">GetMPIEnvironment</span><span class="p">()</span>
<a name="ln-270"></a>        <span class="n">assert</span><span class="p">(</span><span class="nb">associated</span><span class="p">(</span><span class="n">MPIEnvironment</span><span class="p">))</span>
<a name="ln-271"></a><span class="cp">#ifdef PRINT_IO_TIMES</span>
<a name="ln-272"></a>        <span class="n">start_time</span> <span class="o">=</span> <span class="n">MPIEnvironment</span><span class="p">%</span><span class="n">mpi_wtime</span><span class="p">()</span>
<a name="ln-273"></a><span class="cp">#endif</span>
<a name="ln-274"></a>        <span class="c">! Create the dataset with default properties.</span>
<a name="ln-275"></a>        <span class="k">call </span><span class="n">H5Pcreate_f</span><span class="p">(</span><span class="n">H5P_DATASET_XFER_F</span><span class="p">,</span> <span class="n">prp_id</span> <span class="o">=</span> <span class="n">plist_id</span><span class="p">,</span> <span class="n">hdferr</span><span class="o">=</span><span class="n">hdferror</span><span class="p">)</span> 
<a name="ln-276"></a>        <span class="c">! Open dataset</span>
<a name="ln-277"></a>        <span class="k">call </span><span class="n">H5Dopen_f</span><span class="p">(</span><span class="n">loc_id</span> <span class="o">=</span> <span class="n">this</span><span class="p">%</span><span class="n">GetFileID</span><span class="p">(),</span>          <span class="p">&amp;</span>
<a name="ln-278"></a>                <span class="n">name</span>    <span class="o">=</span> <span class="s1">&#39;/&#39;</span><span class="o">//</span><span class="nb">trim</span><span class="p">(</span><span class="nb">adjustl</span><span class="p">(</span><span class="n">DatasetName</span><span class="p">)),</span> <span class="p">&amp;</span>
<a name="ln-279"></a>                <span class="n">dset_id</span> <span class="o">=</span> <span class="n">dset_id</span><span class="p">,</span>                         <span class="p">&amp;</span>
<a name="ln-280"></a>                <span class="n">hdferr</span>  <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span> 
<a name="ln-281"></a><span class="cp">#if defined(ENABLE_MPI) &amp;&amp; defined(ENABLE_PARALLEL_HDF5)</span>
<a name="ln-282"></a>        <span class="c">! Set MPIO data transfer mode to COLLECTIVE</span>
<a name="ln-283"></a>        <span class="k">if</span><span class="p">(</span><span class="n">MPIEnvironment</span><span class="p">%</span><span class="n">is_Parallel</span><span class="p">())</span> <span class="p">&amp;</span>
<a name="ln-284"></a>            <span class="k">call </span><span class="n">H5Pset_dxpl_mpio_f</span><span class="p">(</span><span class="n">prp_id</span> <span class="o">=</span> <span class="n">plist_id</span><span class="p">,</span> <span class="n">data_xfer_mode</span> <span class="o">=</span> <span class="n">H5FD_MPIO_COLLECTIVE_F</span><span class="p">,</span> <span class="n">hdferr</span> <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-285"></a><span class="cp">#endif</span>
<a name="ln-286"></a><span class="c">!        ! Write data</span>
<a name="ln-287"></a><span class="c">!        call H5Dwrite_f(dset_id = dset_id,           &amp;</span>
<a name="ln-288"></a><span class="c">!                mem_type_id   = H5T_NATIVE_INTEGER,  &amp;</span>
<a name="ln-289"></a><span class="c">!                buf           = Values,              &amp;</span>
<a name="ln-290"></a><span class="c">!                dims          = HyperSlabSize,       &amp;</span>
<a name="ln-291"></a><span class="c">!                hdferr        = hdferror,            &amp;</span>
<a name="ln-292"></a><span class="c">!                xfer_prp      = plist_id)</span>
<a name="ln-293"></a><span class="c">!        ! Close data space, dataset, property list .</span>
<a name="ln-294"></a>        <span class="k">call </span><span class="n">H5Dclose_f</span><span class="p">(</span><span class="n">dset_id</span>  <span class="o">=</span> <span class="n">dset_id</span><span class="p">,</span>   <span class="n">hdferr</span> <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-295"></a>        <span class="k">call </span><span class="n">H5Pclose_f</span><span class="p">(</span><span class="n">prp_id</span>   <span class="o">=</span> <span class="n">plist_id</span><span class="p">,</span>  <span class="n">hdferr</span> <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-296"></a><span class="cp">#ifdef FORCE_FLUSH</span>
<a name="ln-297"></a>        <span class="k">call </span><span class="n">H5FFLUSH_f</span><span class="p">(</span><span class="n">object_id</span> <span class="o">=</span> <span class="n">this</span><span class="p">%</span><span class="n">GetFileID</span><span class="p">(),</span> <span class="n">scope</span> <span class="o">=</span> <span class="n">H5F_SCOPE_LOCAL_F</span><span class="p">,</span> <span class="n">hdferr</span> <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-298"></a><span class="cp">#endif</span>
<a name="ln-299"></a><span class="cp">#ifdef PRINT_IO_TIMES</span>
<a name="ln-300"></a>        <span class="n">end_time</span> <span class="o">=</span> <span class="n">MPIEnvironment</span><span class="p">%</span><span class="n">mpi_wtime</span><span class="p">()</span>
<a name="ln-301"></a>        <span class="k">write</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="s1">&#39;(A)&#39;</span><span class="p">)</span> <span class="s1">&#39;[WriteData I8P] Dataset: &#39;</span><span class="o">//</span><span class="n">DatasetName</span><span class="o">//</span><span class="p">&amp;</span>
<a name="ln-302"></a>                       <span class="s1">&#39; Size: &#39;</span><span class="o">//</span><span class="nb">trim</span><span class="p">(</span><span class="nb">adjustl</span><span class="p">(</span><span class="n">str</span><span class="p">(</span><span class="n">no_sign</span><span class="o">=</span><span class="p">.</span><span class="n">true</span><span class="p">.,</span><span class="n">n</span><span class="o">=</span><span class="n">HyperSlabSize</span><span class="p">)))</span><span class="o">//</span><span class="p">&amp;</span>
<a name="ln-303"></a>                       <span class="s1">&#39; Time: &#39;</span><span class="o">//</span><span class="nb">trim</span><span class="p">(</span><span class="nb">adjustl</span><span class="p">(</span><span class="n">str</span><span class="p">(</span><span class="n">no_sign</span><span class="o">=</span><span class="p">.</span><span class="n">true</span><span class="p">.,</span><span class="n">n</span><span class="o">=</span><span class="n">end_time</span><span class="o">-</span><span class="n">start_time</span><span class="p">)))</span>
<a name="ln-304"></a><span class="cp">#endif</span>
<a name="ln-305"></a><span class="cp">#endif</span>
<a name="ln-306"></a>    <span class="k">end subroutine </span><span class="n">hdf5_dataset_per_process_handler_WriteData_I8P</span>
<a name="ln-307"></a>
<a name="ln-308"></a>
<a name="ln-309"></a>    <span class="k">subroutine </span><span class="n">hdf5_dataset_per_process_handler_WriteMetaData_R4P</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">DatasetName</span><span class="p">,</span> <span class="n">DatasetDims</span><span class="p">,</span> <span class="n">HyperSlabOffset</span><span class="p">,</span> <span class="n">HyperSlabSize</span><span class="p">,</span> <span class="n">Values</span><span class="p">)</span>
<a name="ln-310"></a>    <span class="c">!-----------------------------------------------------------------</span>
<a name="ln-311"></a>    <span class="c">!&lt; Writes R4P dataset to a HDF5 file for the dataset per process strategy</span>
<a name="ln-312"></a>    <span class="c">!----------------------------------------------------------------- </span>
<a name="ln-313"></a>        <span class="k">class</span><span class="p">(</span><span class="n">hdf5_dataset_per_process_handler_t</span><span class="p">),</span>  <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">this</span>                <span class="c">!&lt; HDF5 dataset per process handler</span>
<a name="ln-314"></a>        <span class="kt">character</span><span class="p">(</span><span class="nb">len</span><span class="o">=*</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">DatasetName</span>         <span class="c">!&lt; Dataset name</span>
<a name="ln-315"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">DatasetDims</span><span class="p">(:)</span>      <span class="c">!&lt; Dataset dimensions</span>
<a name="ln-316"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">HyperSlabOffset</span><span class="p">(:)</span>  <span class="c">!&lt; Hyperslab offset</span>
<a name="ln-317"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">HyperSlabSize</span><span class="p">(:)</span>    <span class="c">!&lt; Hyperslab size</span>
<a name="ln-318"></a>        <span class="kt">real</span><span class="p">(</span><span class="n">R4P</span><span class="p">),</span>                                  <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">Values</span><span class="p">(:)</span>           <span class="c">!&lt; R4P Dataset values</span>
<a name="ln-319"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HID_T</span><span class="p">)</span>                                         <span class="kd">::</span> <span class="n">filespace</span>           <span class="c">!&lt; HDF5 file Dataspace identifier</span>
<a name="ln-320"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HID_T</span><span class="p">)</span>                                         <span class="kd">::</span> <span class="n">plist_id</span>            <span class="c">!&lt; HDF5 Property list identifier </span>
<a name="ln-321"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HID_T</span><span class="p">)</span>                                         <span class="kd">::</span> <span class="n">dset_id</span>             <span class="c">!&lt; HDF5 Dataset identifier </span>
<a name="ln-322"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">I4P</span><span class="p">)</span>                                           <span class="kd">::</span> <span class="n">hdferror</span>            <span class="c">!&lt; HDF5 error code</span>
<a name="ln-323"></a>    <span class="c">!-----------------------------------------------------------------</span>
<a name="ln-324"></a>        <span class="c">!&lt; @Note: Fixed rank 1?</span>
<a name="ln-325"></a>        <span class="c">!&lt; @Note: Fixed dataset name?</span>
<a name="ln-326"></a>        <span class="c">!&lt; @Note: Fixed rank 1?</span>
<a name="ln-327"></a>        <span class="n">assert</span><span class="p">(</span><span class="n">this</span><span class="p">%</span><span class="n">IsOpen</span><span class="p">()</span> <span class="p">.</span><span class="nb">and</span><span class="p">.</span> <span class="n">this</span><span class="p">%</span><span class="n">GetAction</span><span class="p">()</span> <span class="o">==</span> <span class="n">XDMF_ACTION_WRITE</span><span class="p">)</span>
<a name="ln-328"></a><span class="cp">#ifdef ENABLE_HDF5</span>
<a name="ln-329"></a>        <span class="c">! Create filespace</span>
<a name="ln-330"></a>        <span class="k">call </span><span class="n">H5Screate_simple_f</span><span class="p">(</span><span class="n">rank</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span>                     <span class="p">&amp;</span>
<a name="ln-331"></a>                <span class="n">dims</span>     <span class="o">=</span> <span class="n">DatasetDims</span><span class="p">,</span>                       <span class="p">&amp;</span>
<a name="ln-332"></a>                <span class="n">space_id</span> <span class="o">=</span> <span class="n">filespace</span><span class="p">,</span>                         <span class="p">&amp;</span>
<a name="ln-333"></a>                <span class="n">hdferr</span>   <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-334"></a>        <span class="c">! Create dataset </span>
<a name="ln-335"></a>        <span class="k">call </span><span class="n">H5Dcreate_f</span><span class="p">(</span><span class="n">loc_id</span> <span class="o">=</span> <span class="n">this</span><span class="p">%</span><span class="n">GetFileID</span><span class="p">(),</span>         <span class="p">&amp;</span>
<a name="ln-336"></a>                <span class="n">name</span>     <span class="o">=</span> <span class="s1">&#39;/&#39;</span><span class="o">//</span><span class="nb">trim</span><span class="p">(</span><span class="nb">adjustl</span><span class="p">(</span><span class="n">DatasetName</span><span class="p">)),</span> <span class="p">&amp;</span>
<a name="ln-337"></a>                <span class="n">type_id</span>  <span class="o">=</span> <span class="n">H5T_NATIVE_REAL</span><span class="p">,</span>                 <span class="p">&amp;</span>
<a name="ln-338"></a>                <span class="n">space_id</span> <span class="o">=</span> <span class="n">filespace</span><span class="p">,</span>                       <span class="p">&amp;</span>
<a name="ln-339"></a>                <span class="n">dset_id</span>  <span class="o">=</span> <span class="n">dset_id</span><span class="p">,</span>                         <span class="p">&amp;</span> 
<a name="ln-340"></a>                <span class="n">hdferr</span>   <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-341"></a>        <span class="c">! Close dataset and filespace</span>
<a name="ln-342"></a>        <span class="k">call </span><span class="n">H5Dclose_f</span><span class="p">(</span><span class="n">dset_id</span>  <span class="o">=</span> <span class="n">dset_id</span><span class="p">,</span>   <span class="n">hdferr</span> <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-343"></a>        <span class="k">call </span><span class="n">H5Sclose_f</span><span class="p">(</span><span class="n">space_id</span> <span class="o">=</span> <span class="n">filespace</span><span class="p">,</span> <span class="n">hdferr</span> <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-344"></a><span class="cp">#ifdef FORCE_FLUSH</span>
<a name="ln-345"></a>        <span class="k">call </span><span class="n">H5FFLUSH_f</span><span class="p">(</span><span class="n">object_id</span> <span class="o">=</span> <span class="n">this</span><span class="p">%</span><span class="n">GetFileID</span><span class="p">(),</span> <span class="n">scope</span> <span class="o">=</span> <span class="n">H5F_SCOPE_LOCAL_F</span><span class="p">,</span> <span class="n">hdferr</span> <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-346"></a><span class="cp">#endif</span>
<a name="ln-347"></a><span class="cp">#endif</span>
<a name="ln-348"></a>    <span class="k">end subroutine </span><span class="n">hdf5_dataset_per_process_handler_WriteMetaData_R4P</span>
<a name="ln-349"></a>
<a name="ln-350"></a>
<a name="ln-351"></a>    <span class="k">subroutine </span><span class="n">hdf5_dataset_per_process_handler_WriteData_R4P</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">DatasetName</span><span class="p">,</span> <span class="n">DatasetDims</span><span class="p">,</span> <span class="n">HyperSlabOffset</span><span class="p">,</span> <span class="n">HyperSlabSize</span><span class="p">,</span> <span class="n">Values</span><span class="p">)</span>
<a name="ln-352"></a>    <span class="c">!-----------------------------------------------------------------</span>
<a name="ln-353"></a>    <span class="c">!&lt; Writes R4P dataset to a HDF5 file for the dataset per process strategy</span>
<a name="ln-354"></a>    <span class="c">!----------------------------------------------------------------- </span>
<a name="ln-355"></a>        <span class="k">class</span><span class="p">(</span><span class="n">hdf5_dataset_per_process_handler_t</span><span class="p">),</span>  <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">this</span>                <span class="c">!&lt; HDF5 dataset per process handler</span>
<a name="ln-356"></a>        <span class="kt">character</span><span class="p">(</span><span class="nb">len</span><span class="o">=*</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">DatasetName</span>         <span class="c">!&lt; Dataset name</span>
<a name="ln-357"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">DatasetDims</span><span class="p">(:)</span>      <span class="c">!&lt; Dataset dimensions</span>
<a name="ln-358"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">HyperSlabOffset</span><span class="p">(:)</span>  <span class="c">!&lt; Hyperslab offset</span>
<a name="ln-359"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">HyperSlabSize</span><span class="p">(:)</span>    <span class="c">!&lt; Hyperslab size</span>
<a name="ln-360"></a>        <span class="kt">real</span><span class="p">(</span><span class="n">R4P</span><span class="p">),</span>                                  <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">Values</span><span class="p">(:)</span>           <span class="c">!&lt; R4P Dataset values</span>
<a name="ln-361"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HID_T</span><span class="p">)</span>                                         <span class="kd">::</span> <span class="n">filespace</span>           <span class="c">!&lt; HDF5 file Dataspace identifier</span>
<a name="ln-362"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HID_T</span><span class="p">)</span>                                         <span class="kd">::</span> <span class="n">plist_id</span>            <span class="c">!&lt; HDF5 Property list identifier </span>
<a name="ln-363"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HID_T</span><span class="p">)</span>                                         <span class="kd">::</span> <span class="n">dset_id</span>             <span class="c">!&lt; HDF5 Dataset identifier </span>
<a name="ln-364"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">I4P</span><span class="p">)</span>                                           <span class="kd">::</span> <span class="n">hdferror</span>            <span class="c">!&lt; HDF5 error code</span>
<a name="ln-365"></a>        <span class="k">type</span><span class="p">(</span><span class="n">mpi_env_t</span><span class="p">),</span> <span class="k">pointer</span>                               <span class="kd">::</span> <span class="n">MPIEnvironment</span>
<a name="ln-366"></a><span class="cp">#ifdef PRINT_IO_TIMES</span>
<a name="ln-367"></a>        <span class="kt">real</span><span class="p">(</span><span class="n">R8P</span><span class="p">)</span>                                              <span class="kd">::</span> <span class="n">start_time</span>
<a name="ln-368"></a>        <span class="kt">real</span><span class="p">(</span><span class="n">R8P</span><span class="p">)</span>                                              <span class="kd">::</span> <span class="n">end_time</span>
<a name="ln-369"></a><span class="cp">#endif</span>
<a name="ln-370"></a>    <span class="c">!-----------------------------------------------------------------</span>
<a name="ln-371"></a>        <span class="c">!&lt; @Note: Fixed rank 1?</span>
<a name="ln-372"></a>        <span class="c">!&lt; @Note: Fixed dataset name?</span>
<a name="ln-373"></a>        <span class="c">!&lt; @Note: Fixed rank 1?</span>
<a name="ln-374"></a>        <span class="n">assert</span><span class="p">(</span><span class="n">this</span><span class="p">%</span><span class="n">IsOpen</span><span class="p">()</span> <span class="p">.</span><span class="nb">and</span><span class="p">.</span> <span class="n">this</span><span class="p">%</span><span class="n">GetAction</span><span class="p">()</span> <span class="o">==</span> <span class="n">XDMF_ACTION_WRITE</span><span class="p">)</span>
<a name="ln-375"></a><span class="cp">#ifdef ENABLE_HDF5</span>
<a name="ln-376"></a>        <span class="k">nullify</span><span class="p">(</span><span class="n">MPIEnvironment</span><span class="p">)</span>
<a name="ln-377"></a>        <span class="n">MPIEnvironment</span> <span class="o">=&gt;</span> <span class="n">this</span><span class="p">%</span><span class="n">GetMPIEnvironment</span><span class="p">()</span>
<a name="ln-378"></a>        <span class="n">assert</span><span class="p">(</span><span class="nb">associated</span><span class="p">(</span><span class="n">MPIEnvironment</span><span class="p">))</span>
<a name="ln-379"></a><span class="cp">#ifdef PRINT_IO_TIMES</span>
<a name="ln-380"></a>        <span class="n">start_time</span> <span class="o">=</span> <span class="n">MPIEnvironment</span><span class="p">%</span><span class="n">mpi_wtime</span><span class="p">()</span>
<a name="ln-381"></a><span class="cp">#endif</span>
<a name="ln-382"></a>        <span class="c">! Create the dataset with default properties.</span>
<a name="ln-383"></a>        <span class="k">call </span><span class="n">H5Pcreate_f</span><span class="p">(</span><span class="n">H5P_DATASET_XFER_F</span><span class="p">,</span> <span class="n">prp_id</span> <span class="o">=</span> <span class="n">plist_id</span><span class="p">,</span> <span class="n">hdferr</span><span class="o">=</span><span class="n">hdferror</span><span class="p">)</span> 
<a name="ln-384"></a>        <span class="c">! Open dataset</span>
<a name="ln-385"></a>        <span class="k">call </span><span class="n">H5Dopen_f</span><span class="p">(</span><span class="n">loc_id</span> <span class="o">=</span> <span class="n">this</span><span class="p">%</span><span class="n">GetFileID</span><span class="p">(),</span>          <span class="p">&amp;</span>
<a name="ln-386"></a>                <span class="n">name</span>    <span class="o">=</span> <span class="s1">&#39;/&#39;</span><span class="o">//</span><span class="nb">trim</span><span class="p">(</span><span class="nb">adjustl</span><span class="p">(</span><span class="n">DatasetName</span><span class="p">)),</span> <span class="p">&amp;</span>
<a name="ln-387"></a>                <span class="n">dset_id</span> <span class="o">=</span> <span class="n">dset_id</span><span class="p">,</span>                         <span class="p">&amp;</span>
<a name="ln-388"></a>                <span class="n">hdferr</span>  <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span> 
<a name="ln-389"></a><span class="cp">#if defined(ENABLE_MPI) &amp;&amp; defined(ENABLE_PARALLEL_HDF5)</span>
<a name="ln-390"></a>        <span class="c">! Set MPIO data transfer mode to COLLECTIVE</span>
<a name="ln-391"></a>        <span class="k">if</span><span class="p">(</span><span class="n">MPIEnvironment</span><span class="p">%</span><span class="n">is_Parallel</span><span class="p">())</span> <span class="p">&amp;</span>
<a name="ln-392"></a>            <span class="k">call </span><span class="n">H5Pset_dxpl_mpio_f</span><span class="p">(</span><span class="n">prp_id</span> <span class="o">=</span> <span class="n">plist_id</span><span class="p">,</span> <span class="n">data_xfer_mode</span> <span class="o">=</span> <span class="n">H5FD_MPIO_COLLECTIVE_F</span><span class="p">,</span> <span class="n">hdferr</span> <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-393"></a><span class="cp">#endif</span>
<a name="ln-394"></a>        <span class="c">! Write data</span>
<a name="ln-395"></a>        <span class="k">call </span><span class="n">H5Dwrite_f</span><span class="p">(</span><span class="n">dset_id</span> <span class="o">=</span> <span class="n">dset_id</span><span class="p">,</span>           <span class="p">&amp;</span>
<a name="ln-396"></a>                <span class="n">mem_type_id</span>   <span class="o">=</span> <span class="n">H5T_NATIVE_REAL</span><span class="p">,</span>     <span class="p">&amp;</span>
<a name="ln-397"></a>                <span class="n">buf</span>           <span class="o">=</span> <span class="n">Values</span><span class="p">,</span>              <span class="p">&amp;</span>
<a name="ln-398"></a>                <span class="n">dims</span>          <span class="o">=</span> <span class="n">HyperSlabSize</span><span class="p">,</span>       <span class="p">&amp;</span>
<a name="ln-399"></a>                <span class="n">hdferr</span>        <span class="o">=</span> <span class="n">hdferror</span><span class="p">,</span>            <span class="p">&amp;</span>
<a name="ln-400"></a>                <span class="n">xfer_prp</span>      <span class="o">=</span> <span class="n">plist_id</span><span class="p">)</span>
<a name="ln-401"></a>        <span class="c">! Close data space, dataset, property list .</span>
<a name="ln-402"></a>        <span class="k">call </span><span class="n">H5Dclose_f</span><span class="p">(</span><span class="n">dset_id</span>  <span class="o">=</span> <span class="n">dset_id</span><span class="p">,</span>   <span class="n">hdferr</span> <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-403"></a>        <span class="k">call </span><span class="n">H5Pclose_f</span><span class="p">(</span><span class="n">prp_id</span>   <span class="o">=</span> <span class="n">plist_id</span><span class="p">,</span>  <span class="n">hdferr</span> <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-404"></a><span class="cp">#ifdef FORCE_FLUSH</span>
<a name="ln-405"></a>        <span class="k">call </span><span class="n">H5FFLUSH_f</span><span class="p">(</span><span class="n">object_id</span> <span class="o">=</span> <span class="n">this</span><span class="p">%</span><span class="n">GetFileID</span><span class="p">(),</span> <span class="n">scope</span> <span class="o">=</span> <span class="n">H5F_SCOPE_LOCAL_F</span><span class="p">,</span> <span class="n">hdferr</span> <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-406"></a><span class="cp">#endif</span>
<a name="ln-407"></a><span class="cp">#ifdef PRINT_IO_TIMES</span>
<a name="ln-408"></a>        <span class="n">end_time</span> <span class="o">=</span> <span class="n">MPIEnvironment</span><span class="p">%</span><span class="n">mpi_wtime</span><span class="p">()</span>
<a name="ln-409"></a>        <span class="k">write</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="s1">&#39;(A)&#39;</span><span class="p">)</span> <span class="s1">&#39;[WriteData R4P] Dataset: &#39;</span><span class="o">//</span><span class="n">DatasetName</span><span class="o">//</span><span class="p">&amp;</span>
<a name="ln-410"></a>                       <span class="s1">&#39; Size: &#39;</span><span class="o">//</span><span class="nb">trim</span><span class="p">(</span><span class="nb">adjustl</span><span class="p">(</span><span class="n">str</span><span class="p">(</span><span class="n">no_sign</span><span class="o">=</span><span class="p">.</span><span class="n">true</span><span class="p">.,</span><span class="n">n</span><span class="o">=</span><span class="n">HyperSlabSize</span><span class="p">)))</span><span class="o">//</span><span class="p">&amp;</span>
<a name="ln-411"></a>                       <span class="s1">&#39; Time: &#39;</span><span class="o">//</span><span class="nb">trim</span><span class="p">(</span><span class="nb">adjustl</span><span class="p">(</span><span class="n">str</span><span class="p">(</span><span class="n">no_sign</span><span class="o">=</span><span class="p">.</span><span class="n">true</span><span class="p">.,</span><span class="n">n</span><span class="o">=</span><span class="n">end_time</span><span class="o">-</span><span class="n">start_time</span><span class="p">)))</span>
<a name="ln-412"></a><span class="cp">#endif</span>
<a name="ln-413"></a><span class="cp">#endif</span>
<a name="ln-414"></a>    <span class="k">end subroutine </span><span class="n">hdf5_dataset_per_process_handler_WriteData_R4P</span>
<a name="ln-415"></a>
<a name="ln-416"></a>
<a name="ln-417"></a>    <span class="k">subroutine </span><span class="n">hdf5_dataset_per_process_handler_WriteMetadata_R8P</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">DatasetName</span><span class="p">,</span> <span class="n">DatasetDims</span><span class="p">,</span> <span class="n">HyperSlabOffset</span><span class="p">,</span> <span class="n">HyperSlabSize</span><span class="p">,</span> <span class="n">Values</span><span class="p">)</span>
<a name="ln-418"></a>    <span class="c">!-----------------------------------------------------------------</span>
<a name="ln-419"></a>    <span class="c">!&lt; Writes R4P dataset to a HDF5 file for the dataset per process strategy</span>
<a name="ln-420"></a>    <span class="c">!----------------------------------------------------------------- </span>
<a name="ln-421"></a>        <span class="k">class</span><span class="p">(</span><span class="n">hdf5_dataset_per_process_handler_t</span><span class="p">),</span>  <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">this</span>                <span class="c">!&lt; HDF5 dataset per process handler</span>
<a name="ln-422"></a>        <span class="kt">character</span><span class="p">(</span><span class="nb">len</span><span class="o">=*</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">DatasetName</span>         <span class="c">!&lt; Dataset name</span>
<a name="ln-423"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">DatasetDims</span><span class="p">(:)</span>      <span class="c">!&lt; Dataset dimensions</span>
<a name="ln-424"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">HyperSlabOffset</span><span class="p">(:)</span>  <span class="c">!&lt; Hyperslab offset</span>
<a name="ln-425"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">HyperSlabSize</span><span class="p">(:)</span>    <span class="c">!&lt; Hyperslab size</span>
<a name="ln-426"></a>        <span class="kt">real</span><span class="p">(</span><span class="n">R8P</span><span class="p">),</span>                                  <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">Values</span><span class="p">(:)</span>           <span class="c">!&lt; R8P Dataset values</span>
<a name="ln-427"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HID_T</span><span class="p">)</span>                                         <span class="kd">::</span> <span class="n">filespace</span>           <span class="c">!&lt; HDF5 file Dataspace identifier</span>
<a name="ln-428"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HID_T</span><span class="p">)</span>                                         <span class="kd">::</span> <span class="n">plist_id</span>            <span class="c">!&lt; HDF5 Property list identifier </span>
<a name="ln-429"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HID_T</span><span class="p">)</span>                                         <span class="kd">::</span> <span class="n">dset_id</span>             <span class="c">!&lt; HDF5 Dataset identifier </span>
<a name="ln-430"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">I4P</span><span class="p">)</span>                                           <span class="kd">::</span> <span class="n">hdferror</span>            <span class="c">!&lt; HDF5 error code</span>
<a name="ln-431"></a>    <span class="c">!-----------------------------------------------------------------</span>
<a name="ln-432"></a>        <span class="c">!&lt; @Note: Fixed rank 1?</span>
<a name="ln-433"></a>        <span class="c">!&lt; @Note: Fixed dataset name?</span>
<a name="ln-434"></a>        <span class="c">!&lt; @Note: Fixed rank 1?</span>
<a name="ln-435"></a>        <span class="n">assert</span><span class="p">(</span><span class="n">this</span><span class="p">%</span><span class="n">IsOpen</span><span class="p">()</span> <span class="p">.</span><span class="nb">and</span><span class="p">.</span> <span class="n">this</span><span class="p">%</span><span class="n">GetAction</span><span class="p">()</span> <span class="o">==</span> <span class="n">XDMF_ACTION_WRITE</span><span class="p">)</span>
<a name="ln-436"></a><span class="cp">#ifdef ENABLE_HDF5</span>
<a name="ln-437"></a>        <span class="c">! Create filespace</span>
<a name="ln-438"></a>        <span class="k">call </span><span class="n">H5Screate_simple_f</span><span class="p">(</span><span class="n">rank</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span>                     <span class="p">&amp;</span>
<a name="ln-439"></a>                <span class="n">dims</span>     <span class="o">=</span> <span class="n">DatasetDims</span><span class="p">,</span>                       <span class="p">&amp;</span>
<a name="ln-440"></a>                <span class="n">space_id</span> <span class="o">=</span> <span class="n">filespace</span><span class="p">,</span>                         <span class="p">&amp;</span>
<a name="ln-441"></a>                <span class="n">hdferr</span>   <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-442"></a>        <span class="c">! Create dataset </span>
<a name="ln-443"></a>        <span class="k">call </span><span class="n">H5Dcreate_f</span><span class="p">(</span><span class="n">loc_id</span> <span class="o">=</span> <span class="n">this</span><span class="p">%</span><span class="n">GetFileID</span><span class="p">(),</span>         <span class="p">&amp;</span>
<a name="ln-444"></a>                <span class="n">name</span>     <span class="o">=</span> <span class="s1">&#39;/&#39;</span><span class="o">//</span><span class="nb">trim</span><span class="p">(</span><span class="nb">adjustl</span><span class="p">(</span><span class="n">DatasetName</span><span class="p">)),</span> <span class="p">&amp;</span>
<a name="ln-445"></a>                <span class="n">type_id</span>  <span class="o">=</span> <span class="n">H5T_NATIVE_DOUBLE</span><span class="p">,</span>               <span class="p">&amp;</span>
<a name="ln-446"></a>                <span class="n">space_id</span> <span class="o">=</span> <span class="n">filespace</span><span class="p">,</span>                       <span class="p">&amp;</span>
<a name="ln-447"></a>                <span class="n">dset_id</span>  <span class="o">=</span> <span class="n">dset_id</span><span class="p">,</span>                         <span class="p">&amp;</span> 
<a name="ln-448"></a>                <span class="n">hdferr</span>   <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-449"></a>        <span class="c">! Close dataset and filespace</span>
<a name="ln-450"></a>        <span class="k">call </span><span class="n">H5Dclose_f</span><span class="p">(</span><span class="n">dset_id</span>  <span class="o">=</span> <span class="n">dset_id</span><span class="p">,</span>   <span class="n">hdferr</span> <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-451"></a>        <span class="k">call </span><span class="n">H5Sclose_f</span><span class="p">(</span><span class="n">space_id</span> <span class="o">=</span> <span class="n">filespace</span><span class="p">,</span> <span class="n">hdferr</span> <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-452"></a><span class="cp">#endif</span>
<a name="ln-453"></a>    <span class="k">end subroutine </span><span class="n">hdf5_dataset_per_process_handler_WriteMetadata_R8P</span>
<a name="ln-454"></a>
<a name="ln-455"></a>
<a name="ln-456"></a>    <span class="k">subroutine </span><span class="n">hdf5_dataset_per_process_handler_WriteData_R8P</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">DatasetName</span><span class="p">,</span> <span class="n">DatasetDims</span><span class="p">,</span> <span class="n">HyperSlabOffset</span><span class="p">,</span> <span class="n">HyperSlabSize</span><span class="p">,</span> <span class="n">Values</span><span class="p">)</span>
<a name="ln-457"></a>    <span class="c">!-----------------------------------------------------------------</span>
<a name="ln-458"></a>    <span class="c">!&lt; Writes R4P dataset to a HDF5 file for the dataset per process strategy</span>
<a name="ln-459"></a>    <span class="c">!----------------------------------------------------------------- </span>
<a name="ln-460"></a>        <span class="k">class</span><span class="p">(</span><span class="n">hdf5_dataset_per_process_handler_t</span><span class="p">),</span>  <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">this</span>                <span class="c">!&lt; HDF5 dataset per process handler</span>
<a name="ln-461"></a>        <span class="kt">character</span><span class="p">(</span><span class="nb">len</span><span class="o">=*</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">DatasetName</span>         <span class="c">!&lt; Dataset name</span>
<a name="ln-462"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">DatasetDims</span><span class="p">(:)</span>      <span class="c">!&lt; Dataset dimensions</span>
<a name="ln-463"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">HyperSlabOffset</span><span class="p">(:)</span>  <span class="c">!&lt; Hyperslab offset</span>
<a name="ln-464"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">HyperSlabSize</span><span class="p">(:)</span>    <span class="c">!&lt; Hyperslab size</span>
<a name="ln-465"></a>        <span class="kt">real</span><span class="p">(</span><span class="n">R8P</span><span class="p">),</span>                                  <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">Values</span><span class="p">(:)</span>           <span class="c">!&lt; R8P Dataset values</span>
<a name="ln-466"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HID_T</span><span class="p">)</span>                                         <span class="kd">::</span> <span class="n">filespace</span>           <span class="c">!&lt; HDF5 file Dataspace identifier</span>
<a name="ln-467"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HID_T</span><span class="p">)</span>                                         <span class="kd">::</span> <span class="n">plist_id</span>            <span class="c">!&lt; HDF5 Property list identifier </span>
<a name="ln-468"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HID_T</span><span class="p">)</span>                                         <span class="kd">::</span> <span class="n">dset_id</span>             <span class="c">!&lt; HDF5 Dataset identifier </span>
<a name="ln-469"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">I4P</span><span class="p">)</span>                                           <span class="kd">::</span> <span class="n">hdferror</span>            <span class="c">!&lt; HDF5 error code</span>
<a name="ln-470"></a>        <span class="k">type</span><span class="p">(</span><span class="n">mpi_env_t</span><span class="p">),</span> <span class="k">pointer</span>                               <span class="kd">::</span> <span class="n">MPIEnvironment</span>
<a name="ln-471"></a><span class="cp">#ifdef PRINT_IO_TIMES</span>
<a name="ln-472"></a>        <span class="kt">real</span><span class="p">(</span><span class="n">R8P</span><span class="p">)</span>                                              <span class="kd">::</span> <span class="n">start_time</span>
<a name="ln-473"></a>        <span class="kt">real</span><span class="p">(</span><span class="n">R8P</span><span class="p">)</span>                                              <span class="kd">::</span> <span class="n">end_time</span>
<a name="ln-474"></a><span class="cp">#endif</span>
<a name="ln-475"></a>    <span class="c">!-----------------------------------------------------------------</span>
<a name="ln-476"></a>        <span class="c">!&lt; @Note: Fixed rank 1?</span>
<a name="ln-477"></a>        <span class="c">!&lt; @Note: Fixed dataset name?</span>
<a name="ln-478"></a>        <span class="c">!&lt; @Note: Fixed rank 1?</span>
<a name="ln-479"></a>        <span class="n">assert</span><span class="p">(</span><span class="n">this</span><span class="p">%</span><span class="n">IsOpen</span><span class="p">()</span> <span class="p">.</span><span class="nb">and</span><span class="p">.</span> <span class="n">this</span><span class="p">%</span><span class="n">GetAction</span><span class="p">()</span> <span class="o">==</span> <span class="n">XDMF_ACTION_WRITE</span><span class="p">)</span>
<a name="ln-480"></a><span class="cp">#ifdef ENABLE_HDF5</span>
<a name="ln-481"></a>        <span class="k">nullify</span><span class="p">(</span><span class="n">MPIEnvironment</span><span class="p">)</span>
<a name="ln-482"></a>        <span class="n">MPIEnvironment</span> <span class="o">=&gt;</span> <span class="n">this</span><span class="p">%</span><span class="n">GetMPIEnvironment</span><span class="p">()</span>
<a name="ln-483"></a>        <span class="n">assert</span><span class="p">(</span><span class="nb">associated</span><span class="p">(</span><span class="n">MPIEnvironment</span><span class="p">))</span>
<a name="ln-484"></a><span class="cp">#ifdef PRINT_IO_TIMES</span>
<a name="ln-485"></a>        <span class="n">start_time</span> <span class="o">=</span> <span class="n">MPIEnvironment</span><span class="p">%</span><span class="n">mpi_wtime</span><span class="p">()</span>
<a name="ln-486"></a><span class="cp">#endif</span>
<a name="ln-487"></a>        <span class="c">! Create the dataset with default properties.</span>
<a name="ln-488"></a>        <span class="k">call </span><span class="n">H5Pcreate_f</span><span class="p">(</span><span class="n">H5P_DATASET_XFER_F</span><span class="p">,</span> <span class="n">prp_id</span> <span class="o">=</span> <span class="n">plist_id</span><span class="p">,</span> <span class="n">hdferr</span><span class="o">=</span><span class="n">hdferror</span><span class="p">)</span> 
<a name="ln-489"></a>        <span class="c">! Open dataset</span>
<a name="ln-490"></a>        <span class="k">call </span><span class="n">H5Dopen_f</span><span class="p">(</span><span class="n">loc_id</span> <span class="o">=</span> <span class="n">this</span><span class="p">%</span><span class="n">GetFileID</span><span class="p">(),</span>          <span class="p">&amp;</span>
<a name="ln-491"></a>                <span class="n">name</span>    <span class="o">=</span> <span class="s1">&#39;/&#39;</span><span class="o">//</span><span class="nb">trim</span><span class="p">(</span><span class="nb">adjustl</span><span class="p">(</span><span class="n">DatasetName</span><span class="p">)),</span> <span class="p">&amp;</span>
<a name="ln-492"></a>                <span class="n">dset_id</span> <span class="o">=</span> <span class="n">dset_id</span><span class="p">,</span>                         <span class="p">&amp;</span>
<a name="ln-493"></a>                <span class="n">hdferr</span>  <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span> 
<a name="ln-494"></a><span class="cp">#if defined(ENABLE_MPI) &amp;&amp; defined(ENABLE_PARALLEL_HDF5)</span>
<a name="ln-495"></a>        <span class="c">! Set MPIO data transfer mode to COLLECTIVE</span>
<a name="ln-496"></a>        <span class="k">if</span><span class="p">(</span><span class="n">MPIEnvironment</span><span class="p">%</span><span class="n">is_Parallel</span><span class="p">())</span> <span class="p">&amp;</span>
<a name="ln-497"></a>            <span class="k">call </span><span class="n">H5Pset_dxpl_mpio_f</span><span class="p">(</span><span class="n">prp_id</span> <span class="o">=</span> <span class="n">plist_id</span><span class="p">,</span> <span class="n">data_xfer_mode</span> <span class="o">=</span> <span class="n">H5FD_MPIO_COLLECTIVE_F</span><span class="p">,</span> <span class="n">hdferr</span> <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-498"></a><span class="cp">#endif</span>
<a name="ln-499"></a>        <span class="c">! Write data</span>
<a name="ln-500"></a>        <span class="k">call </span><span class="n">H5Dwrite_f</span><span class="p">(</span><span class="n">dset_id</span> <span class="o">=</span> <span class="n">dset_id</span><span class="p">,</span>           <span class="p">&amp;</span>
<a name="ln-501"></a>                <span class="n">mem_type_id</span>   <span class="o">=</span> <span class="n">H5T_NATIVE_DOUBLE</span><span class="p">,</span>   <span class="p">&amp;</span>
<a name="ln-502"></a>                <span class="n">buf</span>           <span class="o">=</span> <span class="n">Values</span><span class="p">,</span>              <span class="p">&amp;</span>
<a name="ln-503"></a>                <span class="n">dims</span>          <span class="o">=</span> <span class="n">HyperSlabSize</span><span class="p">,</span>       <span class="p">&amp;</span>
<a name="ln-504"></a>                <span class="n">hdferr</span>        <span class="o">=</span> <span class="n">hdferror</span><span class="p">,</span>            <span class="p">&amp;</span>
<a name="ln-505"></a>                <span class="n">xfer_prp</span>      <span class="o">=</span> <span class="n">plist_id</span><span class="p">)</span>
<a name="ln-506"></a>        <span class="c">! Close data space, dataset, property list .</span>
<a name="ln-507"></a>        <span class="k">call </span><span class="n">H5Dclose_f</span><span class="p">(</span><span class="n">dset_id</span>  <span class="o">=</span> <span class="n">dset_id</span><span class="p">,</span>   <span class="n">hdferr</span> <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-508"></a>        <span class="k">call </span><span class="n">H5Pclose_f</span><span class="p">(</span><span class="n">prp_id</span>   <span class="o">=</span> <span class="n">plist_id</span><span class="p">,</span>  <span class="n">hdferr</span> <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-509"></a><span class="cp">#ifdef FORCE_FLUSH</span>
<a name="ln-510"></a>        <span class="k">call </span><span class="n">H5FFLUSH_f</span><span class="p">(</span><span class="n">object_id</span> <span class="o">=</span> <span class="n">this</span><span class="p">%</span><span class="n">GetFileID</span><span class="p">(),</span> <span class="n">scope</span> <span class="o">=</span> <span class="n">H5F_SCOPE_LOCAL_F</span><span class="p">,</span> <span class="n">hdferr</span> <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-511"></a><span class="cp">#endif</span>
<a name="ln-512"></a><span class="cp">#ifdef PRINT_IO_TIMES</span>
<a name="ln-513"></a>        <span class="n">end_time</span> <span class="o">=</span> <span class="n">MPIEnvironment</span><span class="p">%</span><span class="n">mpi_wtime</span><span class="p">()</span>
<a name="ln-514"></a>        <span class="k">write</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="s1">&#39;(A)&#39;</span><span class="p">)</span> <span class="s1">&#39;[WriteData R8P] Dataset: &#39;</span><span class="o">//</span><span class="n">DatasetName</span><span class="o">//</span><span class="p">&amp;</span>
<a name="ln-515"></a>                       <span class="s1">&#39; Size: &#39;</span><span class="o">//</span><span class="nb">trim</span><span class="p">(</span><span class="nb">adjustl</span><span class="p">(</span><span class="n">str</span><span class="p">(</span><span class="n">no_sign</span><span class="o">=</span><span class="p">.</span><span class="n">true</span><span class="p">.,</span><span class="n">n</span><span class="o">=</span><span class="n">HyperSlabSize</span><span class="p">)))</span><span class="o">//</span><span class="p">&amp;</span>
<a name="ln-516"></a>                       <span class="s1">&#39; Time: &#39;</span><span class="o">//</span><span class="nb">trim</span><span class="p">(</span><span class="nb">adjustl</span><span class="p">(</span><span class="n">str</span><span class="p">(</span><span class="n">no_sign</span><span class="o">=</span><span class="p">.</span><span class="n">true</span><span class="p">.,</span><span class="n">n</span><span class="o">=</span><span class="n">end_time</span><span class="o">-</span><span class="n">start_time</span><span class="p">)))</span>
<a name="ln-517"></a><span class="cp">#endif</span>
<a name="ln-518"></a><span class="cp">#endif</span>
<a name="ln-519"></a>    <span class="k">end subroutine </span><span class="n">hdf5_dataset_per_process_handler_WriteData_R8P</span>
<a name="ln-520"></a>
<a name="ln-521"></a>
<a name="ln-522"></a>    <span class="k">subroutine </span><span class="n">hdf5_dataset_per_process_handler_ReadDataset_I4P</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">DatasetName</span><span class="p">,</span> <span class="n">DatasetDims</span><span class="p">,</span> <span class="n">HyperSlabOffset</span><span class="p">,</span> <span class="n">HyperSlabSize</span><span class="p">,</span> <span class="n">Values</span><span class="p">)</span>
<a name="ln-523"></a>    <span class="c">!-----------------------------------------------------------------</span>
<a name="ln-524"></a>    <span class="c">!&lt; Read I4P dataset to a HDF5 file for the dataset per process strategy</span>
<a name="ln-525"></a>    <span class="c">!----------------------------------------------------------------- </span>
<a name="ln-526"></a>        <span class="k">class</span><span class="p">(</span><span class="n">hdf5_dataset_per_process_handler_t</span><span class="p">),</span>  <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">this</span>                <span class="c">!&lt; HDF5 dataset per process handler</span>
<a name="ln-527"></a>        <span class="kt">character</span><span class="p">(</span><span class="nb">len</span><span class="o">=*</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">DatasetName</span>         <span class="c">!&lt; Dataset name</span>
<a name="ln-528"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">DatasetDims</span><span class="p">(:)</span>      <span class="c">!&lt; Dataset dimensions</span>
<a name="ln-529"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">HyperSlabOffset</span><span class="p">(:)</span>  <span class="c">!&lt; Hyperslab offset</span>
<a name="ln-530"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">HyperSlabSize</span><span class="p">(:)</span>    <span class="c">!&lt; Hyperslab size</span>
<a name="ln-531"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">I4P</span><span class="p">),</span> <span class="k">allocatable</span><span class="p">,</span>                  <span class="k">intent</span><span class="p">(</span><span class="n">OUT</span><span class="p">)</span><span class="kd">::</span> <span class="n">Values</span><span class="p">(:)</span>          <span class="c">!&lt; I4P Dataset values</span>
<a name="ln-532"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HID_T</span><span class="p">)</span>                                         <span class="kd">::</span> <span class="n">filespace</span>           <span class="c">!&lt; HDF5 file Dataspace identifier</span>
<a name="ln-533"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HID_T</span><span class="p">)</span>                                         <span class="kd">::</span> <span class="n">memspace</span>            <span class="c">!&lt; HDF5 memory Dataspace identifier</span>
<a name="ln-534"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HID_T</span><span class="p">)</span>                                         <span class="kd">::</span> <span class="n">plist_id</span>            <span class="c">!&lt; HDF5 Property list identifier </span>
<a name="ln-535"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HID_T</span><span class="p">)</span>                                         <span class="kd">::</span> <span class="n">dset_id</span>             <span class="c">!&lt; HDF5 Dataset identifier </span>
<a name="ln-536"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">I4P</span><span class="p">)</span>                                           <span class="kd">::</span> <span class="n">hdferror</span>            <span class="c">!&lt; HDF5 error code</span>
<a name="ln-537"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">I4P</span><span class="p">)</span>                                           <span class="kd">::</span> <span class="n">rank</span>                <span class="c">!&lt; Hyperslab rank </span>
<a name="ln-538"></a>        <span class="k">type</span><span class="p">(</span><span class="n">mpi_env_t</span><span class="p">),</span> <span class="k">pointer</span>                               <span class="kd">::</span> <span class="n">MPIEnvironment</span>
<a name="ln-539"></a><span class="cp">#ifdef PRINT_IO_TIMES</span>
<a name="ln-540"></a>        <span class="kt">real</span><span class="p">(</span><span class="n">R8P</span><span class="p">)</span>                                              <span class="kd">::</span> <span class="n">start_time</span>
<a name="ln-541"></a>        <span class="kt">real</span><span class="p">(</span><span class="n">R8P</span><span class="p">)</span>                                              <span class="kd">::</span> <span class="n">end_time</span>
<a name="ln-542"></a><span class="cp">#endif</span>
<a name="ln-543"></a>    <span class="c">!-----------------------------------------------------------------</span>
<a name="ln-544"></a>        <span class="c">!&lt; @Note: Fixed rank 1?</span>
<a name="ln-545"></a>        <span class="c">!&lt; @Note: Fixed dataset name?</span>
<a name="ln-546"></a>        <span class="c">!&lt; @Note: Fixed rank 1?</span>
<a name="ln-547"></a>        <span class="n">assert</span><span class="p">(</span><span class="n">this</span><span class="p">%</span><span class="n">IsOpen</span><span class="p">()</span> <span class="p">.</span><span class="nb">and</span><span class="p">.</span> <span class="n">this</span><span class="p">%</span><span class="n">GetAction</span><span class="p">()</span> <span class="o">==</span> <span class="n">XDMF_ACTION_READ</span><span class="p">)</span>
<a name="ln-548"></a><span class="cp">#ifdef ENABLE_HDF5</span>
<a name="ln-549"></a>        <span class="k">nullify</span><span class="p">(</span><span class="n">MPIEnvironment</span><span class="p">)</span>
<a name="ln-550"></a>        <span class="n">MPIEnvironment</span> <span class="o">=&gt;</span> <span class="n">this</span><span class="p">%</span><span class="n">GetMPIEnvironment</span><span class="p">()</span>
<a name="ln-551"></a>        <span class="n">assert</span><span class="p">(</span><span class="nb">associated</span><span class="p">(</span><span class="n">MPIEnvironment</span><span class="p">))</span>
<a name="ln-552"></a><span class="cp">#ifdef PRINT_IO_TIMES</span>
<a name="ln-553"></a>        <span class="n">start_time</span> <span class="o">=</span> <span class="n">MPIEnvironment</span><span class="p">%</span><span class="n">mpi_wtime</span><span class="p">()</span>
<a name="ln-554"></a><span class="cp">#endif</span>
<a name="ln-555"></a>        <span class="n">rank</span> <span class="o">=</span> <span class="mi">1</span>
<a name="ln-556"></a>        <span class="k">allocate</span><span class="p">(</span><span class="n">Values</span><span class="p">(</span><span class="n">HyperSlabSize</span><span class="p">(</span><span class="n">rank</span><span class="p">)))</span>
<a name="ln-557"></a>        <span class="c">! Create filespace</span>
<a name="ln-558"></a>        <span class="k">call </span><span class="n">H5Screate_simple_f</span><span class="p">(</span><span class="n">rank</span> <span class="o">=</span> <span class="n">rank</span><span class="p">,</span>                  <span class="p">&amp;</span>
<a name="ln-559"></a>                <span class="n">dims</span>     <span class="o">=</span> <span class="n">DatasetDims</span><span class="p">,</span>                       <span class="p">&amp;</span>
<a name="ln-560"></a>                <span class="n">space_id</span> <span class="o">=</span> <span class="n">filespace</span><span class="p">,</span>                         <span class="p">&amp;</span>
<a name="ln-561"></a>                <span class="n">hdferr</span>   <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-562"></a>        <span class="c">! Create the dataset with default properties.</span>
<a name="ln-563"></a>        <span class="k">call </span><span class="n">H5Pcreate_f</span><span class="p">(</span><span class="n">H5P_DATASET_XFER_F</span><span class="p">,</span> <span class="n">prp_id</span> <span class="o">=</span> <span class="n">plist_id</span><span class="p">,</span> <span class="n">hdferr</span><span class="o">=</span><span class="n">hdferror</span><span class="p">)</span> 
<a name="ln-564"></a><span class="cp">#if defined(ENABLE_MPI) &amp;&amp; defined(ENABLE_PARALLEL_HDF5)</span>
<a name="ln-565"></a>        <span class="c">! Set MPIO data transfer mode to COLLECTIVE</span>
<a name="ln-566"></a>        <span class="k">if</span><span class="p">(</span><span class="n">MPIEnvironment</span><span class="p">%</span><span class="n">is_Parallel</span><span class="p">())</span> <span class="p">&amp;</span>
<a name="ln-567"></a>            <span class="k">call </span><span class="n">H5Pset_dxpl_mpio_f</span><span class="p">(</span><span class="n">prp_id</span> <span class="o">=</span> <span class="n">plist_id</span><span class="p">,</span> <span class="n">data_xfer_mode</span> <span class="o">=</span> <span class="n">H5FD_MPIO_COLLECTIVE_F</span><span class="p">,</span> <span class="n">hdferr</span> <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-568"></a><span class="cp">#endif</span>
<a name="ln-569"></a>        <span class="c">! Open dataset </span>
<a name="ln-570"></a>        <span class="k">call </span><span class="n">H5Dopen_f</span><span class="p">(</span><span class="n">loc_id</span> <span class="o">=</span> <span class="n">this</span><span class="p">%</span><span class="n">GetFileID</span><span class="p">(),</span>           <span class="p">&amp;</span>
<a name="ln-571"></a>                <span class="n">name</span>     <span class="o">=</span> <span class="s1">&#39;/&#39;</span><span class="o">//</span><span class="nb">trim</span><span class="p">(</span><span class="nb">adjustl</span><span class="p">(</span><span class="n">DatasetName</span><span class="p">)),</span> <span class="p">&amp;</span>
<a name="ln-572"></a>                <span class="n">dset_id</span>  <span class="o">=</span> <span class="n">dset_id</span><span class="p">,</span>                         <span class="p">&amp;</span> 
<a name="ln-573"></a>                <span class="n">hdferr</span>   <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span> 
<a name="ln-574"></a>        <span class="c">! Read data</span>
<a name="ln-575"></a>        <span class="k">call </span><span class="n">H5Dread_f</span><span class="p">(</span><span class="n">dset_id</span> <span class="o">=</span> <span class="n">dset_id</span><span class="p">,</span>            <span class="p">&amp;</span>
<a name="ln-576"></a>                <span class="n">mem_type_id</span>   <span class="o">=</span> <span class="n">H5T_NATIVE_INTEGER</span><span class="p">,</span>  <span class="p">&amp;</span>
<a name="ln-577"></a>                <span class="n">buf</span>           <span class="o">=</span> <span class="n">Values</span><span class="p">,</span>              <span class="p">&amp;</span>
<a name="ln-578"></a>                <span class="n">dims</span>          <span class="o">=</span> <span class="n">DatasetDims</span><span class="p">,</span>         <span class="p">&amp;</span>
<a name="ln-579"></a>                <span class="n">hdferr</span>        <span class="o">=</span> <span class="n">hdferror</span><span class="p">,</span>            <span class="p">&amp;</span>
<a name="ln-580"></a>                <span class="n">file_space_id</span> <span class="o">=</span> <span class="n">filespace</span><span class="p">,</span>           <span class="p">&amp;</span>
<a name="ln-581"></a>                <span class="n">xfer_prp</span>      <span class="o">=</span> <span class="n">plist_id</span><span class="p">)</span>
<a name="ln-582"></a>        <span class="c">! Close data space, dataset, property list .</span>
<a name="ln-583"></a>        <span class="k">call </span><span class="n">H5Dclose_f</span><span class="p">(</span><span class="n">dset_id</span>  <span class="o">=</span> <span class="n">dset_id</span><span class="p">,</span>   <span class="n">hdferr</span> <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-584"></a>        <span class="k">call </span><span class="n">H5Pclose_f</span><span class="p">(</span><span class="n">prp_id</span>   <span class="o">=</span> <span class="n">plist_id</span><span class="p">,</span>  <span class="n">hdferr</span> <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-585"></a>        <span class="k">call </span><span class="n">H5Sclose_f</span><span class="p">(</span><span class="n">space_id</span> <span class="o">=</span> <span class="n">filespace</span><span class="p">,</span> <span class="n">hdferr</span> <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-586"></a><span class="cp">#ifdef PRINT_IO_TIMES</span>
<a name="ln-587"></a>        <span class="n">end_time</span> <span class="o">=</span> <span class="n">MPIEnvironment</span><span class="p">%</span><span class="n">mpi_wtime</span><span class="p">()</span>
<a name="ln-588"></a>        <span class="k">write</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="s1">&#39;(A)&#39;</span><span class="p">)</span> <span class="s1">&#39;[ReadDataset I4P] Dataset: &#39;</span><span class="o">//</span><span class="n">DatasetName</span><span class="o">//</span><span class="p">&amp;</span>
<a name="ln-589"></a>                       <span class="s1">&#39; Size: &#39;</span><span class="o">//</span><span class="nb">trim</span><span class="p">(</span><span class="nb">adjustl</span><span class="p">(</span><span class="n">str</span><span class="p">(</span><span class="n">no_sign</span><span class="o">=</span><span class="p">.</span><span class="n">true</span><span class="p">.,</span><span class="n">n</span><span class="o">=</span><span class="n">HyperSlabSize</span><span class="p">)))</span><span class="o">//</span><span class="p">&amp;</span>
<a name="ln-590"></a>                       <span class="s1">&#39; Time: &#39;</span><span class="o">//</span><span class="nb">trim</span><span class="p">(</span><span class="nb">adjustl</span><span class="p">(</span><span class="n">str</span><span class="p">(</span><span class="n">no_sign</span><span class="o">=</span><span class="p">.</span><span class="n">true</span><span class="p">.,</span><span class="n">n</span><span class="o">=</span><span class="n">end_time</span><span class="o">-</span><span class="n">start_time</span><span class="p">)))</span>
<a name="ln-591"></a><span class="cp">#endif</span>
<a name="ln-592"></a><span class="cp">#endif</span>
<a name="ln-593"></a>    <span class="k">end subroutine </span><span class="n">hdf5_dataset_per_process_handler_ReadDataset_I4P</span>
<a name="ln-594"></a>
<a name="ln-595"></a>
<a name="ln-596"></a>    <span class="k">subroutine </span><span class="n">hdf5_dataset_per_process_handler_ReadDataset_I8P</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">DatasetName</span><span class="p">,</span> <span class="n">DatasetDims</span><span class="p">,</span> <span class="n">HyperSlabOffset</span><span class="p">,</span> <span class="n">HyperSlabSize</span><span class="p">,</span> <span class="n">Values</span><span class="p">)</span>
<a name="ln-597"></a>    <span class="c">!-----------------------------------------------------------------</span>
<a name="ln-598"></a>    <span class="c">!&lt; Read I8P dataset to a HDF5 file for the dataset per process strategy</span>
<a name="ln-599"></a>    <span class="c">!----------------------------------------------------------------- </span>
<a name="ln-600"></a>        <span class="k">class</span><span class="p">(</span><span class="n">hdf5_dataset_per_process_handler_t</span><span class="p">),</span>  <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">this</span>                <span class="c">!&lt; HDF5 dataset per process handler</span>
<a name="ln-601"></a>        <span class="kt">character</span><span class="p">(</span><span class="nb">len</span><span class="o">=*</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">DatasetName</span>         <span class="c">!&lt; Dataset name</span>
<a name="ln-602"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">DatasetDims</span><span class="p">(:)</span>      <span class="c">!&lt; Dataset dimensions</span>
<a name="ln-603"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">HyperSlabOffset</span><span class="p">(:)</span>  <span class="c">!&lt; Hyperslab offset</span>
<a name="ln-604"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">HyperSlabSize</span><span class="p">(:)</span>    <span class="c">!&lt; Hyperslab size</span>
<a name="ln-605"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">I8P</span><span class="p">),</span> <span class="k">allocatable</span><span class="p">,</span>                  <span class="k">intent</span><span class="p">(</span><span class="n">OUT</span><span class="p">)</span><span class="kd">::</span> <span class="n">Values</span><span class="p">(:)</span>          <span class="c">!&lt; I8P Dataset values</span>
<a name="ln-606"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HID_T</span><span class="p">)</span>                                         <span class="kd">::</span> <span class="n">filespace</span>           <span class="c">!&lt; HDF5 file Dataspace identifier</span>
<a name="ln-607"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HID_T</span><span class="p">)</span>                                         <span class="kd">::</span> <span class="n">memspace</span>            <span class="c">!&lt; HDF5 memory Dataspace identifier</span>
<a name="ln-608"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HID_T</span><span class="p">)</span>                                         <span class="kd">::</span> <span class="n">plist_id</span>            <span class="c">!&lt; HDF5 Property list identifier </span>
<a name="ln-609"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HID_T</span><span class="p">)</span>                                         <span class="kd">::</span> <span class="n">dset_id</span>             <span class="c">!&lt; HDF5 Dataset identifier </span>
<a name="ln-610"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">I4P</span><span class="p">)</span>                                           <span class="kd">::</span> <span class="n">hdferror</span>            <span class="c">!&lt; HDF5 error code</span>
<a name="ln-611"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">I4P</span><span class="p">)</span>                                           <span class="kd">::</span> <span class="n">rank</span>                <span class="c">!&lt; Hyperslab rank </span>
<a name="ln-612"></a>        <span class="k">type</span><span class="p">(</span><span class="n">mpi_env_t</span><span class="p">),</span> <span class="k">pointer</span>                               <span class="kd">::</span> <span class="n">MPIEnvironment</span>
<a name="ln-613"></a><span class="cp">#ifdef PRINT_IO_TIMES</span>
<a name="ln-614"></a>        <span class="kt">real</span><span class="p">(</span><span class="n">R8P</span><span class="p">)</span>                                              <span class="kd">::</span> <span class="n">start_time</span>
<a name="ln-615"></a>        <span class="kt">real</span><span class="p">(</span><span class="n">R8P</span><span class="p">)</span>                                              <span class="kd">::</span> <span class="n">end_time</span>
<a name="ln-616"></a><span class="cp">#endif</span>
<a name="ln-617"></a>    <span class="c">!-----------------------------------------------------------------</span>
<a name="ln-618"></a>        <span class="c">!&lt; @Note: Fixed rank 1?</span>
<a name="ln-619"></a>        <span class="c">!&lt; @Note: Fixed dataset name?</span>
<a name="ln-620"></a>        <span class="c">!&lt; @Note: Fixed rank 1?</span>
<a name="ln-621"></a>        <span class="n">assert</span><span class="p">(</span><span class="n">this</span><span class="p">%</span><span class="n">IsOpen</span><span class="p">()</span> <span class="p">.</span><span class="nb">and</span><span class="p">.</span> <span class="n">this</span><span class="p">%</span><span class="n">GetAction</span><span class="p">()</span> <span class="o">==</span> <span class="n">XDMF_ACTION_READ</span><span class="p">)</span>
<a name="ln-622"></a><span class="cp">#ifdef ENABLE_HDF5</span>
<a name="ln-623"></a>        <span class="k">nullify</span><span class="p">(</span><span class="n">MPIEnvironment</span><span class="p">)</span>
<a name="ln-624"></a>        <span class="n">MPIEnvironment</span> <span class="o">=&gt;</span> <span class="n">this</span><span class="p">%</span><span class="n">GetMPIEnvironment</span><span class="p">()</span>
<a name="ln-625"></a>        <span class="n">assert</span><span class="p">(</span><span class="nb">associated</span><span class="p">(</span><span class="n">MPIEnvironment</span><span class="p">))</span>
<a name="ln-626"></a><span class="cp">#ifdef PRINT_IO_TIMES</span>
<a name="ln-627"></a>        <span class="n">start_time</span> <span class="o">=</span> <span class="n">MPIEnvironment</span><span class="p">%</span><span class="n">mpi_wtime</span><span class="p">()</span>
<a name="ln-628"></a><span class="cp">#endif</span>
<a name="ln-629"></a>        <span class="n">rank</span> <span class="o">=</span> <span class="mi">1</span>
<a name="ln-630"></a>        <span class="k">allocate</span><span class="p">(</span><span class="n">Values</span><span class="p">(</span><span class="n">HyperSlabSize</span><span class="p">(</span><span class="n">rank</span><span class="p">)))</span>
<a name="ln-631"></a>        <span class="c">! Create filespace</span>
<a name="ln-632"></a>        <span class="k">call </span><span class="n">H5Screate_simple_f</span><span class="p">(</span><span class="n">rank</span> <span class="o">=</span> <span class="n">rank</span><span class="p">,</span>                  <span class="p">&amp;</span>
<a name="ln-633"></a>                <span class="n">dims</span>     <span class="o">=</span> <span class="n">DatasetDims</span><span class="p">,</span>                       <span class="p">&amp;</span>
<a name="ln-634"></a>                <span class="n">space_id</span> <span class="o">=</span> <span class="n">filespace</span><span class="p">,</span>                         <span class="p">&amp;</span>
<a name="ln-635"></a>                <span class="n">hdferr</span>   <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-636"></a>        <span class="c">! Create the dataset with default properties.</span>
<a name="ln-637"></a>        <span class="k">call </span><span class="n">H5Pcreate_f</span><span class="p">(</span><span class="n">H5P_DATASET_XFER_F</span><span class="p">,</span> <span class="n">prp_id</span> <span class="o">=</span> <span class="n">plist_id</span><span class="p">,</span> <span class="n">hdferr</span><span class="o">=</span><span class="n">hdferror</span><span class="p">)</span> 
<a name="ln-638"></a><span class="cp">#if defined(ENABLE_MPI) &amp;&amp; defined(ENABLE_PARALLEL_HDF5)</span>
<a name="ln-639"></a>        <span class="c">! Set MPIO data transfer mode to COLLECTIVE</span>
<a name="ln-640"></a>        <span class="k">if</span><span class="p">(</span><span class="n">MPIEnvironment</span><span class="p">%</span><span class="n">is_parallel</span><span class="p">())</span> <span class="p">&amp;</span>
<a name="ln-641"></a>            <span class="k">call </span><span class="n">H5Pset_dxpl_mpio_f</span><span class="p">(</span><span class="n">prp_id</span> <span class="o">=</span> <span class="n">plist_id</span><span class="p">,</span> <span class="n">data_xfer_mode</span> <span class="o">=</span> <span class="n">H5FD_MPIO_COLLECTIVE_F</span><span class="p">,</span> <span class="n">hdferr</span> <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-642"></a><span class="cp">#endif</span>
<a name="ln-643"></a>        <span class="c">! Open dataset </span>
<a name="ln-644"></a>        <span class="k">call </span><span class="n">H5Dopen_f</span><span class="p">(</span><span class="n">loc_id</span> <span class="o">=</span> <span class="n">this</span><span class="p">%</span><span class="n">GetFileID</span><span class="p">(),</span>           <span class="p">&amp;</span>
<a name="ln-645"></a>                <span class="n">name</span>     <span class="o">=</span> <span class="s1">&#39;/&#39;</span><span class="o">//</span><span class="nb">trim</span><span class="p">(</span><span class="nb">adjustl</span><span class="p">(</span><span class="n">DatasetName</span><span class="p">)),</span> <span class="p">&amp;</span>
<a name="ln-646"></a>                <span class="n">dset_id</span>  <span class="o">=</span> <span class="n">dset_id</span><span class="p">,</span>                         <span class="p">&amp;</span> 
<a name="ln-647"></a>                <span class="n">hdferr</span>   <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-648"></a><span class="c">!        call H5Dread_f(dset_id = dset_id,            &amp;</span>
<a name="ln-649"></a><span class="c">!                mem_type_id   = H5T_NATIVE_INTEGER,  &amp;</span>
<a name="ln-650"></a><span class="c">!                buf           = Values,              &amp;</span>
<a name="ln-651"></a><span class="c">!                dims          = HyperSlabSize,       &amp;</span>
<a name="ln-652"></a><span class="c">!                hdferr        = hdferror,            &amp;</span>
<a name="ln-653"></a><span class="c">!                file_space_id = filespace,           &amp;</span>
<a name="ln-654"></a><span class="c">!                xfer_prp      = plist_id)</span>
<a name="ln-655"></a>        <span class="c">! Close data space, dataset, property list .</span>
<a name="ln-656"></a>        <span class="k">call </span><span class="n">H5Dclose_f</span><span class="p">(</span><span class="n">dset_id</span>  <span class="o">=</span> <span class="n">dset_id</span><span class="p">,</span>   <span class="n">hdferr</span> <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-657"></a>        <span class="k">call </span><span class="n">H5Pclose_f</span><span class="p">(</span><span class="n">prp_id</span>   <span class="o">=</span> <span class="n">plist_id</span><span class="p">,</span>  <span class="n">hdferr</span> <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-658"></a>        <span class="k">call </span><span class="n">H5Sclose_f</span><span class="p">(</span><span class="n">space_id</span> <span class="o">=</span> <span class="n">filespace</span><span class="p">,</span> <span class="n">hdferr</span> <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-659"></a><span class="cp">#ifdef PRINT_IO_TIMES</span>
<a name="ln-660"></a>        <span class="n">end_time</span> <span class="o">=</span> <span class="n">MPIEnvironment</span><span class="p">%</span><span class="n">mpi_wtime</span><span class="p">()</span>
<a name="ln-661"></a>        <span class="k">write</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="s1">&#39;(A)&#39;</span><span class="p">)</span> <span class="s1">&#39;[ReadDataset I8P] Dataset: &#39;</span><span class="o">//</span><span class="n">DatasetName</span><span class="o">//</span><span class="p">&amp;</span>
<a name="ln-662"></a>                       <span class="s1">&#39; Size: &#39;</span><span class="o">//</span><span class="nb">trim</span><span class="p">(</span><span class="nb">adjustl</span><span class="p">(</span><span class="n">str</span><span class="p">(</span><span class="n">no_sign</span><span class="o">=</span><span class="p">.</span><span class="n">true</span><span class="p">.,</span><span class="n">n</span><span class="o">=</span><span class="n">HyperSlabSize</span><span class="p">)))</span><span class="o">//</span><span class="p">&amp;</span>
<a name="ln-663"></a>                       <span class="s1">&#39; Time: &#39;</span><span class="o">//</span><span class="nb">trim</span><span class="p">(</span><span class="nb">adjustl</span><span class="p">(</span><span class="n">str</span><span class="p">(</span><span class="n">no_sign</span><span class="o">=</span><span class="p">.</span><span class="n">true</span><span class="p">.,</span><span class="n">n</span><span class="o">=</span><span class="n">end_time</span><span class="o">-</span><span class="n">start_time</span><span class="p">)))</span>
<a name="ln-664"></a><span class="cp">#endif</span>
<a name="ln-665"></a><span class="cp">#endif</span>
<a name="ln-666"></a>    <span class="k">end subroutine </span><span class="n">hdf5_dataset_per_process_handler_ReadDataset_I8P</span>
<a name="ln-667"></a>
<a name="ln-668"></a>
<a name="ln-669"></a>    <span class="k">subroutine </span><span class="n">hdf5_dataset_per_process_handler_ReadDataset_R4P</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">DatasetName</span><span class="p">,</span> <span class="n">DatasetDims</span><span class="p">,</span> <span class="n">HyperSlabOffset</span><span class="p">,</span> <span class="n">HyperSlabSize</span><span class="p">,</span> <span class="n">Values</span><span class="p">)</span>
<a name="ln-670"></a>    <span class="c">!-----------------------------------------------------------------</span>
<a name="ln-671"></a>    <span class="c">!&lt; Read R4P dataset to a HDF5 file for the dataset per process strategy</span>
<a name="ln-672"></a>    <span class="c">!----------------------------------------------------------------- </span>
<a name="ln-673"></a>        <span class="k">class</span><span class="p">(</span><span class="n">hdf5_dataset_per_process_handler_t</span><span class="p">),</span>  <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">this</span>                <span class="c">!&lt; HDF5 dataset per process handler</span>
<a name="ln-674"></a>        <span class="kt">character</span><span class="p">(</span><span class="nb">len</span><span class="o">=*</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">DatasetName</span>         <span class="c">!&lt; Dataset name</span>
<a name="ln-675"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">DatasetDims</span><span class="p">(:)</span>      <span class="c">!&lt; Dataset dimensions</span>
<a name="ln-676"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">HyperSlabOffset</span><span class="p">(:)</span>  <span class="c">!&lt; Hyperslab offset</span>
<a name="ln-677"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">HyperSlabSize</span><span class="p">(:)</span>    <span class="c">!&lt; Hyperslab size</span>
<a name="ln-678"></a>        <span class="kt">real</span><span class="p">(</span><span class="n">R4P</span><span class="p">),</span> <span class="k">allocatable</span><span class="p">,</span>                     <span class="k">intent</span><span class="p">(</span><span class="n">OUT</span><span class="p">)</span><span class="kd">::</span> <span class="n">Values</span><span class="p">(:)</span>           <span class="c">!&lt; R4P Dataset values</span>
<a name="ln-679"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HID_T</span><span class="p">)</span>                                         <span class="kd">::</span> <span class="n">filespace</span>           <span class="c">!&lt; HDF5 file Dataspace identifier</span>
<a name="ln-680"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HID_T</span><span class="p">)</span>                                         <span class="kd">::</span> <span class="n">memspace</span>            <span class="c">!&lt; HDF5 memory Dataspace identifier</span>
<a name="ln-681"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HID_T</span><span class="p">)</span>                                         <span class="kd">::</span> <span class="n">plist_id</span>            <span class="c">!&lt; HDF5 Property list identifier </span>
<a name="ln-682"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HID_T</span><span class="p">)</span>                                         <span class="kd">::</span> <span class="n">dset_id</span>             <span class="c">!&lt; HDF5 Dataset identifier </span>
<a name="ln-683"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">I4P</span><span class="p">)</span>                                           <span class="kd">::</span> <span class="n">hdferror</span>            <span class="c">!&lt; HDF5 error code</span>
<a name="ln-684"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">I4P</span><span class="p">)</span>                                           <span class="kd">::</span> <span class="n">rank</span>                <span class="c">!&lt; Hyperslab rank </span>
<a name="ln-685"></a>        <span class="k">type</span><span class="p">(</span><span class="n">mpi_env_t</span><span class="p">),</span> <span class="k">pointer</span>                               <span class="kd">::</span> <span class="n">MPIEnvironment</span>
<a name="ln-686"></a><span class="cp">#ifdef PRINT_IO_TIMES</span>
<a name="ln-687"></a>        <span class="kt">real</span><span class="p">(</span><span class="n">R8P</span><span class="p">)</span>                                              <span class="kd">::</span> <span class="n">start_time</span>
<a name="ln-688"></a>        <span class="kt">real</span><span class="p">(</span><span class="n">R8P</span><span class="p">)</span>                                              <span class="kd">::</span> <span class="n">end_time</span>
<a name="ln-689"></a><span class="cp">#endif</span>
<a name="ln-690"></a>    <span class="c">!-----------------------------------------------------------------</span>
<a name="ln-691"></a>        <span class="c">!&lt; @Note: Fixed rank 1?</span>
<a name="ln-692"></a>        <span class="c">!&lt; @Note: Fixed dataset name?</span>
<a name="ln-693"></a>        <span class="c">!&lt; @Note: Fixed rank 1?</span>
<a name="ln-694"></a>        <span class="n">assert</span><span class="p">(</span><span class="n">this</span><span class="p">%</span><span class="n">IsOpen</span><span class="p">()</span> <span class="p">.</span><span class="nb">and</span><span class="p">.</span> <span class="n">this</span><span class="p">%</span><span class="n">GetAction</span><span class="p">()</span> <span class="o">==</span> <span class="n">XDMF_ACTION_READ</span><span class="p">)</span>
<a name="ln-695"></a><span class="cp">#ifdef ENABLE_HDF5</span>
<a name="ln-696"></a>        <span class="k">nullify</span><span class="p">(</span><span class="n">MPIEnvironment</span><span class="p">)</span>
<a name="ln-697"></a>        <span class="n">MPIEnvironment</span> <span class="o">=&gt;</span> <span class="n">this</span><span class="p">%</span><span class="n">GetMPIEnvironment</span><span class="p">()</span>
<a name="ln-698"></a>        <span class="n">assert</span><span class="p">(</span><span class="nb">associated</span><span class="p">(</span><span class="n">MPIEnvironment</span><span class="p">))</span>
<a name="ln-699"></a><span class="cp">#ifdef PRINT_IO_TIMES</span>
<a name="ln-700"></a>        <span class="n">start_time</span> <span class="o">=</span> <span class="n">MPIEnvironment</span><span class="p">%</span><span class="n">mpi_wtime</span><span class="p">()</span>
<a name="ln-701"></a><span class="cp">#endif</span>
<a name="ln-702"></a>        <span class="n">rank</span> <span class="o">=</span> <span class="mi">1</span>
<a name="ln-703"></a>        <span class="k">allocate</span><span class="p">(</span><span class="n">Values</span><span class="p">(</span><span class="n">HyperSlabSize</span><span class="p">(</span><span class="n">rank</span><span class="p">)))</span>
<a name="ln-704"></a>        <span class="c">! Create filespace</span>
<a name="ln-705"></a>        <span class="k">call </span><span class="n">H5Screate_simple_f</span><span class="p">(</span><span class="n">rank</span> <span class="o">=</span> <span class="n">rank</span><span class="p">,</span>                  <span class="p">&amp;</span>
<a name="ln-706"></a>                <span class="n">dims</span>     <span class="o">=</span> <span class="n">DatasetDims</span><span class="p">,</span>                       <span class="p">&amp;</span>
<a name="ln-707"></a>                <span class="n">space_id</span> <span class="o">=</span> <span class="n">filespace</span><span class="p">,</span>                         <span class="p">&amp;</span>
<a name="ln-708"></a>                <span class="n">hdferr</span>   <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-709"></a>        <span class="c">! Create the dataset with default properties.</span>
<a name="ln-710"></a>        <span class="k">call </span><span class="n">H5Pcreate_f</span><span class="p">(</span><span class="n">H5P_DATASET_XFER_F</span><span class="p">,</span> <span class="n">prp_id</span> <span class="o">=</span> <span class="n">plist_id</span><span class="p">,</span> <span class="n">hdferr</span><span class="o">=</span><span class="n">hdferror</span><span class="p">)</span> 
<a name="ln-711"></a><span class="cp">#if defined(ENABLE_MPI) &amp;&amp; defined(ENABLE_PARALLEL_HDF5)</span>
<a name="ln-712"></a>        <span class="c">! Set MPIO data transfer mode to COLLECTIVE</span>
<a name="ln-713"></a>        <span class="k">IF</span><span class="p">(</span><span class="n">MPIEnvironment</span><span class="p">%</span><span class="n">is_Parallel</span><span class="p">())</span> <span class="p">&amp;</span>
<a name="ln-714"></a>            <span class="k">call </span><span class="n">H5Pset_dxpl_mpio_f</span><span class="p">(</span><span class="n">prp_id</span> <span class="o">=</span> <span class="n">plist_id</span><span class="p">,</span> <span class="n">data_xfer_mode</span> <span class="o">=</span> <span class="n">H5FD_MPIO_COLLECTIVE_F</span><span class="p">,</span> <span class="n">hdferr</span> <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-715"></a><span class="cp">#endif</span>
<a name="ln-716"></a>        <span class="c">! Open dataset </span>
<a name="ln-717"></a>        <span class="k">call </span><span class="n">H5Dopen_f</span><span class="p">(</span><span class="n">loc_id</span> <span class="o">=</span> <span class="n">this</span><span class="p">%</span><span class="n">GetFileID</span><span class="p">(),</span>           <span class="p">&amp;</span>
<a name="ln-718"></a>                <span class="n">name</span>     <span class="o">=</span> <span class="s1">&#39;/&#39;</span><span class="o">//</span><span class="nb">trim</span><span class="p">(</span><span class="nb">adjustl</span><span class="p">(</span><span class="n">DatasetName</span><span class="p">)),</span> <span class="p">&amp;</span>
<a name="ln-719"></a>                <span class="n">dset_id</span>  <span class="o">=</span> <span class="n">dset_id</span><span class="p">,</span>                         <span class="p">&amp;</span> 
<a name="ln-720"></a>                <span class="n">hdferr</span>   <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-721"></a>        <span class="c">! Read data</span>
<a name="ln-722"></a>        <span class="k">call </span><span class="n">H5Dread_f</span><span class="p">(</span><span class="n">dset_id</span> <span class="o">=</span> <span class="n">dset_id</span><span class="p">,</span>         <span class="p">&amp;</span>
<a name="ln-723"></a>                <span class="n">mem_type_id</span>   <span class="o">=</span> <span class="n">H5T_NATIVE_REAL</span><span class="p">,</span>  <span class="p">&amp;</span>
<a name="ln-724"></a>                <span class="n">buf</span>           <span class="o">=</span> <span class="n">Values</span><span class="p">,</span>           <span class="p">&amp;</span>
<a name="ln-725"></a>                <span class="n">dims</span>          <span class="o">=</span> <span class="n">HyperSlabSize</span><span class="p">,</span>    <span class="p">&amp;</span>
<a name="ln-726"></a>                <span class="n">hdferr</span>        <span class="o">=</span> <span class="n">hdferror</span><span class="p">,</span>         <span class="p">&amp;</span>
<a name="ln-727"></a>                <span class="n">file_space_id</span> <span class="o">=</span> <span class="n">filespace</span><span class="p">,</span>        <span class="p">&amp;</span>
<a name="ln-728"></a>                <span class="n">xfer_prp</span>      <span class="o">=</span> <span class="n">plist_id</span><span class="p">)</span>
<a name="ln-729"></a>        <span class="c">! Close data space, dataset, property list .</span>
<a name="ln-730"></a>        <span class="k">call </span><span class="n">H5Dclose_f</span><span class="p">(</span><span class="n">dset_id</span>  <span class="o">=</span> <span class="n">dset_id</span><span class="p">,</span>   <span class="n">hdferr</span> <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-731"></a>        <span class="k">call </span><span class="n">H5Pclose_f</span><span class="p">(</span><span class="n">prp_id</span>   <span class="o">=</span> <span class="n">plist_id</span><span class="p">,</span>  <span class="n">hdferr</span> <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-732"></a>        <span class="k">call </span><span class="n">H5Sclose_f</span><span class="p">(</span><span class="n">space_id</span> <span class="o">=</span> <span class="n">filespace</span><span class="p">,</span> <span class="n">hdferr</span> <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-733"></a><span class="cp">#ifdef PRINT_IO_TIMES</span>
<a name="ln-734"></a>        <span class="n">end_time</span> <span class="o">=</span> <span class="n">MPIEnvironment</span><span class="p">%</span><span class="n">mpi_wtime</span><span class="p">()</span>
<a name="ln-735"></a>        <span class="k">write</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="s1">&#39;(A)&#39;</span><span class="p">)</span> <span class="s1">&#39;[ReadDataset R4P] Dataset: &#39;</span><span class="o">//</span><span class="n">DatasetName</span><span class="o">//</span><span class="p">&amp;</span>
<a name="ln-736"></a>                       <span class="s1">&#39; Size: &#39;</span><span class="o">//</span><span class="nb">trim</span><span class="p">(</span><span class="nb">adjustl</span><span class="p">(</span><span class="n">str</span><span class="p">(</span><span class="n">no_sign</span><span class="o">=</span><span class="p">.</span><span class="n">true</span><span class="p">.,</span><span class="n">n</span><span class="o">=</span><span class="n">HyperSlabSize</span><span class="p">)))</span><span class="o">//</span><span class="p">&amp;</span>
<a name="ln-737"></a>                       <span class="s1">&#39; Time: &#39;</span><span class="o">//</span><span class="nb">trim</span><span class="p">(</span><span class="nb">adjustl</span><span class="p">(</span><span class="n">str</span><span class="p">(</span><span class="n">no_sign</span><span class="o">=</span><span class="p">.</span><span class="n">true</span><span class="p">.,</span><span class="n">n</span><span class="o">=</span><span class="n">end_time</span><span class="o">-</span><span class="n">start_time</span><span class="p">)))</span>
<a name="ln-738"></a><span class="cp">#endif</span>
<a name="ln-739"></a><span class="cp">#endif</span>
<a name="ln-740"></a>    <span class="k">end subroutine </span><span class="n">hdf5_dataset_per_process_handler_ReadDataset_R4P</span>
<a name="ln-741"></a>
<a name="ln-742"></a>
<a name="ln-743"></a>    <span class="k">subroutine </span><span class="n">hdf5_dataset_per_process_handler_ReadDataset_R8P</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">DatasetName</span><span class="p">,</span> <span class="n">DatasetDims</span><span class="p">,</span> <span class="n">HyperSlabOffset</span><span class="p">,</span> <span class="n">HyperSlabSize</span><span class="p">,</span> <span class="n">Values</span><span class="p">)</span>
<a name="ln-744"></a>    <span class="c">!-----------------------------------------------------------------</span>
<a name="ln-745"></a>    <span class="c">!&lt; read R8P dataset to a HDF5 file for the dataset per process strategy</span>
<a name="ln-746"></a>    <span class="c">!----------------------------------------------------------------- </span>
<a name="ln-747"></a>        <span class="k">class</span><span class="p">(</span><span class="n">hdf5_dataset_per_process_handler_t</span><span class="p">),</span>  <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">this</span>                <span class="c">!&lt; HDF5 dataset per process handler</span>
<a name="ln-748"></a>        <span class="kt">character</span><span class="p">(</span><span class="nb">len</span><span class="o">=*</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">DatasetName</span>         <span class="c">!&lt; Dataset name</span>
<a name="ln-749"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">DatasetDims</span><span class="p">(:)</span>      <span class="c">!&lt; Dataset dimensions</span>
<a name="ln-750"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">HyperSlabOffset</span><span class="p">(:)</span>  <span class="c">!&lt; Hyperslab offset</span>
<a name="ln-751"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">HyperSlabSize</span><span class="p">(:)</span>    <span class="c">!&lt; Hyperslab size</span>
<a name="ln-752"></a>        <span class="kt">real</span><span class="p">(</span><span class="n">R8P</span><span class="p">),</span> <span class="k">allocatable</span><span class="p">,</span>                     <span class="k">intent</span><span class="p">(</span><span class="n">OUT</span><span class="p">)</span><span class="kd">::</span> <span class="n">Values</span><span class="p">(:)</span>          <span class="c">!&lt; R8P Dataset values</span>
<a name="ln-753"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HID_T</span><span class="p">)</span>                                         <span class="kd">::</span> <span class="n">filespace</span>           <span class="c">!&lt; HDF5 file Dataspace identifier</span>
<a name="ln-754"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HID_T</span><span class="p">)</span>                                         <span class="kd">::</span> <span class="n">memspace</span>            <span class="c">!&lt; HDF5 memory Dataspace identifier</span>
<a name="ln-755"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HID_T</span><span class="p">)</span>                                         <span class="kd">::</span> <span class="n">plist_id</span>            <span class="c">!&lt; HDF5 Property list identifier </span>
<a name="ln-756"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HID_T</span><span class="p">)</span>                                         <span class="kd">::</span> <span class="n">dset_id</span>             <span class="c">!&lt; HDF5 Dataset identifier </span>
<a name="ln-757"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">I4P</span><span class="p">)</span>                                           <span class="kd">::</span> <span class="n">hdferror</span>            <span class="c">!&lt; HDF5 error code</span>
<a name="ln-758"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">I4P</span><span class="p">)</span>                                           <span class="kd">::</span> <span class="n">rank</span>                <span class="c">!&lt; Hyperslab rank </span>
<a name="ln-759"></a>        <span class="k">type</span><span class="p">(</span><span class="n">mpi_env_t</span><span class="p">),</span> <span class="k">pointer</span>                               <span class="kd">::</span> <span class="n">MPIEnvironment</span>
<a name="ln-760"></a><span class="cp">#ifdef PRINT_IO_TIMES</span>
<a name="ln-761"></a>        <span class="kt">real</span><span class="p">(</span><span class="n">R8P</span><span class="p">)</span>                                              <span class="kd">::</span> <span class="n">start_time</span>
<a name="ln-762"></a>        <span class="kt">real</span><span class="p">(</span><span class="n">R8P</span><span class="p">)</span>                                              <span class="kd">::</span> <span class="n">end_time</span>
<a name="ln-763"></a><span class="cp">#endif</span>
<a name="ln-764"></a>    <span class="c">!-----------------------------------------------------------------</span>
<a name="ln-765"></a>        <span class="c">!&lt; @Note: Fixed rank 1?</span>
<a name="ln-766"></a>        <span class="c">!&lt; @Note: Fixed dataset name?</span>
<a name="ln-767"></a>        <span class="c">!&lt; @Note: Fixed rank 1?</span>
<a name="ln-768"></a>        <span class="n">assert</span><span class="p">(</span><span class="n">this</span><span class="p">%</span><span class="n">IsOpen</span><span class="p">()</span> <span class="p">.</span><span class="nb">and</span><span class="p">.</span> <span class="n">this</span><span class="p">%</span><span class="n">GetAction</span><span class="p">()</span> <span class="o">==</span> <span class="n">XDMF_ACTION_READ</span><span class="p">)</span>
<a name="ln-769"></a><span class="cp">#ifdef ENABLE_HDF5</span>
<a name="ln-770"></a>        <span class="k">nullify</span><span class="p">(</span><span class="n">MPIEnvironment</span><span class="p">)</span>
<a name="ln-771"></a>        <span class="n">MPIEnvironment</span> <span class="o">=&gt;</span> <span class="n">this</span><span class="p">%</span><span class="n">GetMPIEnvironment</span><span class="p">()</span>
<a name="ln-772"></a>        <span class="n">assert</span><span class="p">(</span><span class="nb">associated</span><span class="p">(</span><span class="n">MPIEnvironment</span><span class="p">))</span>
<a name="ln-773"></a><span class="cp">#ifdef PRINT_IO_TIMES</span>
<a name="ln-774"></a>        <span class="n">start_time</span> <span class="o">=</span> <span class="n">MPIEnvironment</span><span class="p">%</span><span class="n">mpi_wtime</span><span class="p">()</span>
<a name="ln-775"></a><span class="cp">#endif</span>
<a name="ln-776"></a>        <span class="n">rank</span> <span class="o">=</span> <span class="mi">1</span>
<a name="ln-777"></a>        <span class="k">allocate</span><span class="p">(</span><span class="n">Values</span><span class="p">(</span><span class="n">HyperSlabSize</span><span class="p">(</span><span class="n">rank</span><span class="p">)))</span>
<a name="ln-778"></a>        <span class="c">! Create filespace</span>
<a name="ln-779"></a>        <span class="k">call </span><span class="n">H5Screate_simple_f</span><span class="p">(</span><span class="n">rank</span> <span class="o">=</span> <span class="n">rank</span><span class="p">,</span>                  <span class="p">&amp;</span>
<a name="ln-780"></a>                <span class="n">dims</span>     <span class="o">=</span> <span class="n">DatasetDims</span><span class="p">,</span>                       <span class="p">&amp;</span>
<a name="ln-781"></a>                <span class="n">space_id</span> <span class="o">=</span> <span class="n">filespace</span><span class="p">,</span>                         <span class="p">&amp;</span>
<a name="ln-782"></a>                <span class="n">hdferr</span>   <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-783"></a>        <span class="c">! Create the dataset with default properties.</span>
<a name="ln-784"></a>        <span class="k">call </span><span class="n">H5Pcreate_f</span><span class="p">(</span><span class="n">H5P_DATASET_XFER_F</span><span class="p">,</span> <span class="n">prp_id</span> <span class="o">=</span> <span class="n">plist_id</span><span class="p">,</span> <span class="n">hdferr</span><span class="o">=</span><span class="n">hdferror</span><span class="p">)</span> 
<a name="ln-785"></a><span class="cp">#if defined(ENABLE_MPI) &amp;&amp; defined(ENABLE_PARALLEL_HDF5)</span>
<a name="ln-786"></a>        <span class="c">! Set MPIO data transfer mode to COLLECTIVE</span>
<a name="ln-787"></a>        <span class="k">if</span><span class="p">(</span><span class="n">MPIEnvironment</span><span class="p">%</span><span class="n">is_Parallel</span><span class="p">())</span> <span class="p">&amp;</span>
<a name="ln-788"></a>            <span class="k">call </span><span class="n">H5Pset_dxpl_mpio_f</span><span class="p">(</span><span class="n">prp_id</span> <span class="o">=</span> <span class="n">plist_id</span><span class="p">,</span> <span class="n">data_xfer_mode</span> <span class="o">=</span> <span class="n">H5FD_MPIO_COLLECTIVE_F</span><span class="p">,</span> <span class="n">hdferr</span> <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-789"></a><span class="cp">#endif</span>
<a name="ln-790"></a>        <span class="c">! Open dataset </span>
<a name="ln-791"></a>        <span class="k">call </span><span class="n">H5Dopen_f</span><span class="p">(</span><span class="n">loc_id</span> <span class="o">=</span> <span class="n">this</span><span class="p">%</span><span class="n">GetFileID</span><span class="p">(),</span>           <span class="p">&amp;</span>
<a name="ln-792"></a>                <span class="n">name</span>     <span class="o">=</span> <span class="s1">&#39;/&#39;</span><span class="o">//</span><span class="nb">trim</span><span class="p">(</span><span class="nb">adjustl</span><span class="p">(</span><span class="n">DatasetName</span><span class="p">)),</span> <span class="p">&amp;</span>
<a name="ln-793"></a>                <span class="n">dset_id</span>  <span class="o">=</span> <span class="n">dset_id</span><span class="p">,</span>                         <span class="p">&amp;</span> 
<a name="ln-794"></a>                <span class="n">hdferr</span>   <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-795"></a>        <span class="c">! Read data</span>
<a name="ln-796"></a>        <span class="k">call </span><span class="n">H5Dread_f</span><span class="p">(</span><span class="n">dset_id</span> <span class="o">=</span> <span class="n">dset_id</span><span class="p">,</span>           <span class="p">&amp;</span>
<a name="ln-797"></a>                <span class="n">mem_type_id</span>   <span class="o">=</span> <span class="n">H5T_NATIVE_DOUBLE</span><span class="p">,</span>  <span class="p">&amp;</span>
<a name="ln-798"></a>                <span class="n">buf</span>           <span class="o">=</span> <span class="n">Values</span><span class="p">,</span>             <span class="p">&amp;</span>
<a name="ln-799"></a>                <span class="n">dims</span>          <span class="o">=</span> <span class="n">HyperSlabSize</span><span class="p">,</span>      <span class="p">&amp;</span>
<a name="ln-800"></a>                <span class="n">hdferr</span>        <span class="o">=</span> <span class="n">hdferror</span><span class="p">,</span>           <span class="p">&amp;</span>
<a name="ln-801"></a>                <span class="n">file_space_id</span> <span class="o">=</span> <span class="n">filespace</span><span class="p">,</span>          <span class="p">&amp;</span>
<a name="ln-802"></a>                <span class="n">xfer_prp</span>      <span class="o">=</span> <span class="n">plist_id</span><span class="p">)</span>
<a name="ln-803"></a>        <span class="c">! Close data space, dataset, property list .</span>
<a name="ln-804"></a>        <span class="k">call </span><span class="n">H5Dclose_f</span><span class="p">(</span><span class="n">dset_id</span>  <span class="o">=</span> <span class="n">dset_id</span><span class="p">,</span>   <span class="n">hdferr</span> <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-805"></a>        <span class="k">call </span><span class="n">H5Pclose_f</span><span class="p">(</span><span class="n">prp_id</span>   <span class="o">=</span> <span class="n">plist_id</span><span class="p">,</span>  <span class="n">hdferr</span> <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-806"></a>        <span class="k">call </span><span class="n">H5Sclose_f</span><span class="p">(</span><span class="n">space_id</span> <span class="o">=</span> <span class="n">filespace</span><span class="p">,</span> <span class="n">hdferr</span> <span class="o">=</span> <span class="n">hdferror</span><span class="p">)</span>
<a name="ln-807"></a><span class="cp">#ifdef PRINT_IO_TIMES</span>
<a name="ln-808"></a>        <span class="n">end_time</span> <span class="o">=</span> <span class="n">MPIEnvironment</span><span class="p">%</span><span class="n">mpi_wtime</span><span class="p">()</span>
<a name="ln-809"></a>        <span class="k">write</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="s1">&#39;(A)&#39;</span><span class="p">)</span> <span class="s1">&#39;[ReadDataset R8P] Dataset: &#39;</span><span class="o">//</span><span class="n">DatasetName</span><span class="o">//</span><span class="p">&amp;</span>
<a name="ln-810"></a>                       <span class="s1">&#39; Size: &#39;</span><span class="o">//</span><span class="nb">trim</span><span class="p">(</span><span class="nb">adjustl</span><span class="p">(</span><span class="n">str</span><span class="p">(</span><span class="n">no_sign</span><span class="o">=</span><span class="p">.</span><span class="n">true</span><span class="p">.,</span><span class="n">n</span><span class="o">=</span><span class="n">HyperSlabSize</span><span class="p">)))</span><span class="o">//</span><span class="p">&amp;</span>
<a name="ln-811"></a>                       <span class="s1">&#39; Time: &#39;</span><span class="o">//</span><span class="nb">trim</span><span class="p">(</span><span class="nb">adjustl</span><span class="p">(</span><span class="n">str</span><span class="p">(</span><span class="n">no_sign</span><span class="o">=</span><span class="p">.</span><span class="n">true</span><span class="p">.,</span><span class="n">n</span><span class="o">=</span><span class="n">end_time</span><span class="o">-</span><span class="n">start_time</span><span class="p">)))</span>
<a name="ln-812"></a><span class="cp">#endif</span>
<a name="ln-813"></a><span class="cp">#endif</span>
<a name="ln-814"></a>    <span class="k">end subroutine </span><span class="n">hdf5_dataset_per_process_handler_ReadDataset_R8P</span>
<a name="ln-815"></a>
<a name="ln-816"></a>
<a name="ln-817"></a>    <span class="k">subroutine </span><span class="n">hdf5_dataset_per_process_handler_WriteAttribute_I4P</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">Name</span><span class="p">,</span> <span class="k">Type</span><span class="p">,</span> <span class="n">Center</span><span class="p">,</span> <span class="n">Values</span><span class="p">)</span>
<a name="ln-818"></a>    <span class="c">!-----------------------------------------------------------------</span>
<a name="ln-819"></a>    <span class="c">!&lt; Writes I4P attriburte values to a HDF5 file for the dataset per process strategy</span>
<a name="ln-820"></a>    <span class="c">!----------------------------------------------------------------- </span>
<a name="ln-821"></a>        <span class="k">class</span><span class="p">(</span><span class="n">hdf5_dataset_per_process_handler_t</span><span class="p">),</span>  <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">this</span>                <span class="c">!&lt; HDF5 dataset per process handler for structured grids</span>
<a name="ln-822"></a>        <span class="kt">character</span><span class="p">(</span><span class="nb">len</span><span class="o">=*</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">Name</span>                <span class="c">!&lt; Attribute name</span>
<a name="ln-823"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">I4P</span><span class="p">),</span>                               <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="k">Type</span>                <span class="c">!&lt; Attribute type (Scalar, Vector, etc.)</span>
<a name="ln-824"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">I4P</span><span class="p">),</span>                               <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">Center</span>              <span class="c">!&lt; Attribute center at (Node, Cell, etc.)</span>
<a name="ln-825"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">I4P</span><span class="p">),</span>                               <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">Values</span><span class="p">(:)</span>           <span class="c">!&lt; I4P Attribute values</span>
<a name="ln-826"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">)</span>                                       <span class="kd">::</span> <span class="n">GlobalNumberOfData</span>  <span class="c">!&lt; Global number of data</span>
<a name="ln-827"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">)</span>                                       <span class="kd">::</span> <span class="n">LocalNumberOfData</span>   <span class="c">!&lt; Local number of data</span>
<a name="ln-828"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">)</span>                                       <span class="kd">::</span> <span class="n">NumberOfComponents</span>  <span class="c">!&lt; Global number of nodes</span>
<a name="ln-829"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">)</span>                                       <span class="kd">::</span> <span class="n">DataOffset</span>          <span class="c">!&lt; Node offset for a particular grid</span>
<a name="ln-830"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">I4P</span><span class="p">)</span>                                           <span class="kd">::</span> <span class="n">GridID</span>              <span class="c">!&lt; Index to loop on GridID&#39;s</span>
<a name="ln-831"></a>        <span class="k">type</span><span class="p">(</span><span class="n">mpi_env_t</span><span class="p">),</span> <span class="k">pointer</span>                               <span class="kd">::</span> <span class="n">MPIEnvironment</span>      <span class="c">!&lt; MPI Environment</span>
<a name="ln-832"></a>    <span class="c">!-----------------------------------------------------------------</span>
<a name="ln-833"></a>        <span class="c">!&lt; @Note: Fixed rank 1?</span>
<a name="ln-834"></a>        <span class="c">!&lt; @Note: Fixed dataset name?</span>
<a name="ln-835"></a>        <span class="c">!&lt; @Note: Fixed rank 1?</span>
<a name="ln-836"></a><span class="cp">#ifdef ENABLE_HDF5</span>
<a name="ln-837"></a>        <span class="n">MPIEnvironment</span> <span class="o">=&gt;</span> <span class="n">this</span><span class="p">%</span><span class="n">GetMPIEnvironment</span><span class="p">()</span>
<a name="ln-838"></a>        <span class="n">assert</span><span class="p">(</span><span class="nb">associated</span><span class="p">(</span><span class="n">MPIEnvironment</span><span class="p">))</span>
<a name="ln-839"></a>        <span class="n">NumberOfComponents</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">GetNumberOfComponentsFromAttributeType</span><span class="p">(</span><span class="k">Type</span><span class="p">),</span> <span class="n">HSIZE_T</span><span class="p">)</span>
<a name="ln-840"></a>        <span class="k">do </span><span class="n">GridID</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">MPIEnvironment</span><span class="p">%</span><span class="n">get_comm_size</span><span class="p">()</span><span class="o">-</span><span class="mi">1</span>
<a name="ln-841"></a>            <span class="k">call </span><span class="n">this</span><span class="p">%</span><span class="n">CalculateAttributeDimensions</span><span class="p">(</span><span class="n">GridID</span><span class="o">=</span><span class="n">GridID</span><span class="p">,</span> <span class="n">Center</span><span class="o">=</span><span class="n">Center</span><span class="p">,</span> <span class="n">LocalNumberOfData</span><span class="o">=</span><span class="n">LocalNumberOfData</span><span class="p">)</span>
<a name="ln-842"></a>            <span class="k">call </span><span class="n">this</span><span class="p">%</span><span class="n">WriteMetaData</span><span class="p">(</span>                                                           <span class="p">&amp;</span>
<a name="ln-843"></a>                    <span class="n">DatasetName</span>     <span class="o">=</span> <span class="n">Name</span><span class="o">//</span><span class="s1">&#39;_&#39;</span><span class="o">//</span><span class="nb">trim</span><span class="p">(</span><span class="nb">adjustl</span><span class="p">(</span><span class="n">str</span><span class="p">(</span><span class="n">no_sign</span><span class="o">=</span><span class="p">.</span><span class="n">true</span><span class="p">.,</span><span class="n">n</span><span class="o">=</span><span class="n">GridID</span><span class="p">))),</span>  <span class="p">&amp;</span>
<a name="ln-844"></a>                    <span class="n">DatasetDims</span>     <span class="o">=</span> <span class="p">(</span><span class="o">/</span><span class="n">LocalNumberOfData</span><span class="o">*</span><span class="n">NumberOfComponents</span><span class="o">/</span><span class="p">),</span>                <span class="p">&amp;</span>
<a name="ln-845"></a>                    <span class="n">HyperSlabOffset</span> <span class="o">=</span> <span class="p">(</span><span class="o">/</span><span class="mi">0_HSIZE_T</span><span class="o">/</span><span class="p">),</span>                                           <span class="p">&amp;</span>
<a name="ln-846"></a>                    <span class="n">HyperSlabSize</span>   <span class="o">=</span> <span class="p">(</span><span class="o">/</span><span class="n">LocalNumberOfData</span><span class="o">*</span><span class="n">NumberOfComponents</span><span class="o">/</span><span class="p">),</span>                <span class="p">&amp;</span>
<a name="ln-847"></a>                    <span class="n">Values</span>          <span class="o">=</span> <span class="n">Values</span><span class="p">)</span>
<a name="ln-848"></a>        <span class="n">enddo</span>
<a name="ln-849"></a>        <span class="k">call </span><span class="n">this</span><span class="p">%</span><span class="n">CalculateAttributeDimensions</span><span class="p">(</span><span class="n">GridID</span><span class="o">=</span><span class="n">MPIEnvironment</span><span class="p">%</span><span class="n">get_rank</span><span class="p">(),</span> <span class="n">Center</span><span class="o">=</span><span class="n">Center</span><span class="p">,</span> <span class="n">LocalNumberOfData</span><span class="o">=</span><span class="n">LocalNumberOfData</span><span class="p">)</span>
<a name="ln-850"></a>        <span class="k">call </span><span class="n">this</span><span class="p">%</span><span class="n">WriteData</span><span class="p">(</span>                                                                                       <span class="p">&amp;</span>
<a name="ln-851"></a>                <span class="n">DatasetName</span>     <span class="o">=</span> <span class="n">Name</span><span class="o">//</span><span class="s1">&#39;_&#39;</span><span class="o">//</span><span class="nb">trim</span><span class="p">(</span><span class="nb">adjustl</span><span class="p">(</span><span class="n">str</span><span class="p">(</span><span class="n">no_sign</span><span class="o">=</span><span class="p">.</span><span class="n">true</span><span class="p">.,</span><span class="n">n</span><span class="o">=</span><span class="n">MPIEnvironment</span><span class="p">%</span><span class="n">get_rank</span><span class="p">()))),</span>       <span class="p">&amp;</span>
<a name="ln-852"></a>                <span class="n">DatasetDims</span>     <span class="o">=</span> <span class="p">(</span><span class="o">/</span><span class="n">LocalNumberOfData</span><span class="o">*</span><span class="n">NumberOfComponents</span><span class="o">/</span><span class="p">),</span>                                        <span class="p">&amp;</span>
<a name="ln-853"></a>                <span class="n">HyperSlabOffset</span> <span class="o">=</span> <span class="p">(</span><span class="o">/</span><span class="mi">0_HSIZE_T</span><span class="o">/</span><span class="p">),</span>                                                                   <span class="p">&amp;</span>
<a name="ln-854"></a>                <span class="n">HyperSlabSize</span>   <span class="o">=</span> <span class="p">(</span><span class="o">/</span><span class="n">LocalNumberOfData</span><span class="o">*</span><span class="n">NumberOfComponents</span><span class="o">/</span><span class="p">),</span>                                        <span class="p">&amp;</span>
<a name="ln-855"></a>                <span class="n">Values</span>          <span class="o">=</span> <span class="n">Values</span><span class="p">)</span>
<a name="ln-856"></a><span class="cp">#endif</span>
<a name="ln-857"></a>    <span class="k">end subroutine </span><span class="n">hdf5_dataset_per_process_handler_WriteAttribute_I4P</span>
<a name="ln-858"></a>
<a name="ln-859"></a>
<a name="ln-860"></a>    <span class="k">subroutine </span><span class="n">hdf5_dataset_per_process_handler_WriteAttribute_I8P</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">Name</span><span class="p">,</span> <span class="k">type</span><span class="p">,</span> <span class="n">Center</span><span class="p">,</span> <span class="n">Values</span><span class="p">)</span>
<a name="ln-861"></a>    <span class="c">!-----------------------------------------------------------------</span>
<a name="ln-862"></a>    <span class="c">!&lt; Writes I8P attriburte values to a HDF5 file for the dataset per process strategy</span>
<a name="ln-863"></a>    <span class="c">!----------------------------------------------------------------- </span>
<a name="ln-864"></a>        <span class="k">class</span><span class="p">(</span><span class="n">hdf5_dataset_per_process_handler_t</span><span class="p">),</span>  <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">this</span>                <span class="c">!&lt; HDF5 dataset per process handler for structured grids</span>
<a name="ln-865"></a>        <span class="kt">character</span><span class="p">(</span><span class="nb">len</span><span class="o">=*</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">Name</span>                <span class="c">!&lt; Attribute name</span>
<a name="ln-866"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">I4P</span><span class="p">),</span>                               <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="k">Type</span>                <span class="c">!&lt; Attribute type (Scalar, Vector, etc.)</span>
<a name="ln-867"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">I4P</span><span class="p">),</span>                               <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">Center</span>              <span class="c">!&lt; Attribute center at (Node, Cell, etc.)</span>
<a name="ln-868"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">I8P</span><span class="p">),</span>                               <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">Values</span><span class="p">(:)</span>           <span class="c">!&lt; I8P Attribute values</span>
<a name="ln-869"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">)</span>                                       <span class="kd">::</span> <span class="n">GlobalNumberOfData</span>  <span class="c">!&lt; Global number of data</span>
<a name="ln-870"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">)</span>                                       <span class="kd">::</span> <span class="n">LocalNumberOfData</span>   <span class="c">!&lt; Local number of data</span>
<a name="ln-871"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">)</span>                                       <span class="kd">::</span> <span class="n">NumberOfComponents</span>  <span class="c">!&lt; Global number of nodes</span>
<a name="ln-872"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">)</span>                                       <span class="kd">::</span> <span class="n">DataOffset</span>          <span class="c">!&lt; Node offset for a particular grid</span>
<a name="ln-873"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">I4P</span><span class="p">)</span>                                           <span class="kd">::</span> <span class="n">GridID</span>              <span class="c">!&lt; Index to loop on GridID&#39;s</span>
<a name="ln-874"></a>        <span class="k">type</span><span class="p">(</span><span class="n">mpi_env_t</span><span class="p">),</span> <span class="k">pointer</span>                               <span class="kd">::</span> <span class="n">MPIEnvironment</span>      <span class="c">!&lt; MPI Environment</span>
<a name="ln-875"></a>    <span class="c">!-----------------------------------------------------------------</span>
<a name="ln-876"></a>        <span class="c">!&lt; @Note: Fixed rank 1?</span>
<a name="ln-877"></a>        <span class="c">!&lt; @Note: Fixed dataset name?</span>
<a name="ln-878"></a>        <span class="c">!&lt; @Note: Fixed rank 1?</span>
<a name="ln-879"></a><span class="cp">#ifdef ENABLE_HDF5</span>
<a name="ln-880"></a>        <span class="n">MPIEnvironment</span> <span class="o">=&gt;</span> <span class="n">this</span><span class="p">%</span><span class="n">GetMPIEnvironment</span><span class="p">()</span>
<a name="ln-881"></a>        <span class="n">assert</span><span class="p">(</span><span class="nb">associated</span><span class="p">(</span><span class="n">MPIEnvironment</span><span class="p">))</span>
<a name="ln-882"></a>        <span class="n">NumberOfComponents</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">GetNumberOfComponentsFromAttributeType</span><span class="p">(</span><span class="k">Type</span><span class="p">),</span> <span class="n">HSIZE_T</span><span class="p">)</span>
<a name="ln-883"></a>        <span class="k">do </span><span class="n">GridID</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">MPIEnvironment</span><span class="p">%</span><span class="n">get_comm_size</span><span class="p">()</span><span class="o">-</span><span class="mi">1</span>
<a name="ln-884"></a>            <span class="k">call </span><span class="n">this</span><span class="p">%</span><span class="n">CalculateAttributeDimensions</span><span class="p">(</span> <span class="n">GridID</span><span class="o">=</span><span class="n">GridID</span><span class="p">,</span> <span class="n">Center</span><span class="o">=</span><span class="n">Center</span><span class="p">,</span> <span class="n">LocalNumberOfData</span><span class="o">=</span><span class="n">LocalNumberOfData</span><span class="p">)</span>
<a name="ln-885"></a>            <span class="k">call </span><span class="n">this</span><span class="p">%</span><span class="n">WriteMetaData</span><span class="p">(</span>                                                           <span class="p">&amp;</span>
<a name="ln-886"></a>                    <span class="n">DatasetName</span>     <span class="o">=</span> <span class="n">Name</span><span class="o">//</span><span class="s1">&#39;_&#39;</span><span class="o">//</span><span class="nb">trim</span><span class="p">(</span><span class="nb">adjustl</span><span class="p">(</span><span class="n">str</span><span class="p">(</span><span class="n">no_sign</span><span class="o">=</span><span class="p">.</span><span class="n">true</span><span class="p">.,</span><span class="n">n</span><span class="o">=</span><span class="n">GridID</span><span class="p">))),</span>  <span class="p">&amp;</span>
<a name="ln-887"></a>                    <span class="n">DatasetDims</span>     <span class="o">=</span> <span class="p">(</span><span class="o">/</span><span class="n">LocalNumberOfData</span><span class="o">*</span><span class="n">NumberOfComponents</span><span class="o">/</span><span class="p">),</span>                <span class="p">&amp;</span>
<a name="ln-888"></a>                    <span class="n">HyperSlabOffset</span> <span class="o">=</span> <span class="p">(</span><span class="o">/</span><span class="mi">0_HSIZE_T</span><span class="o">/</span><span class="p">),</span>                                           <span class="p">&amp;</span>
<a name="ln-889"></a>                    <span class="n">HyperSlabSize</span>   <span class="o">=</span> <span class="p">(</span><span class="o">/</span><span class="n">LocalNumberOfData</span><span class="o">*</span><span class="n">NumberOfComponents</span><span class="o">/</span><span class="p">),</span>                <span class="p">&amp;</span>
<a name="ln-890"></a>                    <span class="n">Values</span>          <span class="o">=</span> <span class="n">Values</span><span class="p">)</span>
<a name="ln-891"></a>        <span class="n">enddo</span>
<a name="ln-892"></a>        <span class="k">call </span><span class="n">this</span><span class="p">%</span><span class="n">CalculateAttributeDimensions</span><span class="p">(</span><span class="n">GridID</span><span class="o">=</span><span class="n">MPIEnvironment</span><span class="p">%</span><span class="n">get_rank</span><span class="p">(),</span> <span class="n">Center</span><span class="o">=</span><span class="n">Center</span><span class="p">,</span> <span class="n">LocalNumberOfData</span><span class="o">=</span><span class="n">LocalNumberOfData</span><span class="p">)</span>
<a name="ln-893"></a>        <span class="k">call </span><span class="n">this</span><span class="p">%</span><span class="n">WriteData</span><span class="p">(</span>                                                                                       <span class="p">&amp;</span>
<a name="ln-894"></a>                <span class="n">DatasetName</span>     <span class="o">=</span> <span class="n">Name</span><span class="o">//</span><span class="s1">&#39;_&#39;</span><span class="o">//</span><span class="nb">trim</span><span class="p">(</span><span class="nb">adjustl</span><span class="p">(</span><span class="n">str</span><span class="p">(</span><span class="n">no_sign</span><span class="o">=</span><span class="p">.</span><span class="n">true</span><span class="p">.,</span><span class="n">n</span><span class="o">=</span><span class="n">MPIEnvironment</span><span class="p">%</span><span class="n">get_rank</span><span class="p">()))),</span>       <span class="p">&amp;</span>
<a name="ln-895"></a>                <span class="n">DatasetDims</span>     <span class="o">=</span> <span class="p">(</span><span class="o">/</span><span class="n">LocalNumberOfData</span><span class="o">*</span><span class="n">NumberOfComponents</span><span class="o">/</span><span class="p">),</span>                                        <span class="p">&amp;</span>
<a name="ln-896"></a>                <span class="n">HyperSlabOffset</span> <span class="o">=</span> <span class="p">(</span><span class="o">/</span><span class="mi">0_HSIZE_T</span><span class="o">/</span><span class="p">),</span>                                                                   <span class="p">&amp;</span>
<a name="ln-897"></a>                <span class="n">HyperSlabSize</span>   <span class="o">=</span> <span class="p">(</span><span class="o">/</span><span class="n">LocalNumberOfData</span><span class="o">*</span><span class="n">NumberOfComponents</span><span class="o">/</span><span class="p">),</span>                                        <span class="p">&amp;</span>
<a name="ln-898"></a>                <span class="n">Values</span>          <span class="o">=</span> <span class="n">Values</span><span class="p">)</span>
<a name="ln-899"></a><span class="cp">#endif</span>
<a name="ln-900"></a>    <span class="k">end subroutine </span><span class="n">hdf5_dataset_per_process_handler_WriteAttribute_I8P</span>
<a name="ln-901"></a>
<a name="ln-902"></a>
<a name="ln-903"></a>    <span class="k">subroutine </span><span class="n">hdf5_dataset_per_process_handler_WriteAttribute_R4P</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">Name</span><span class="p">,</span> <span class="k">Type</span><span class="p">,</span> <span class="n">Center</span><span class="p">,</span> <span class="n">Values</span><span class="p">)</span>
<a name="ln-904"></a>    <span class="c">!-----------------------------------------------------------------</span>
<a name="ln-905"></a>    <span class="c">!&lt; Writes R4P attribute values to a HDF5 file for the dataset per process strategy</span>
<a name="ln-906"></a>    <span class="c">!----------------------------------------------------------------- </span>
<a name="ln-907"></a>        <span class="k">class</span><span class="p">(</span><span class="n">hdf5_dataset_per_process_handler_t</span><span class="p">),</span>  <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">this</span>                <span class="c">!&lt; HDF5 dataset per process handler for structured grids</span>
<a name="ln-908"></a>        <span class="kt">character</span><span class="p">(</span><span class="nb">len</span><span class="o">=*</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">Name</span>                <span class="c">!&lt; Attribute name</span>
<a name="ln-909"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">I4P</span><span class="p">),</span>                               <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="k">Type</span>                <span class="c">!&lt; Attribute type (Scalar, Vector, etc.)</span>
<a name="ln-910"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">I4P</span><span class="p">),</span>                               <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">Center</span>              <span class="c">!&lt; Attribute center at (Node, Cell, etc.)</span>
<a name="ln-911"></a>        <span class="kt">real</span><span class="p">(</span><span class="n">R4P</span><span class="p">),</span>                                  <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">Values</span><span class="p">(:)</span>           <span class="c">!&lt; R4P Attribute values</span>
<a name="ln-912"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">)</span>                                       <span class="kd">::</span> <span class="n">GlobalNumberOfData</span>  <span class="c">!&lt; Global number of data</span>
<a name="ln-913"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">)</span>                                       <span class="kd">::</span> <span class="n">LocalNumberOfData</span>   <span class="c">!&lt; Local number of data</span>
<a name="ln-914"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">)</span>                                       <span class="kd">::</span> <span class="n">NumberOfComponents</span>  <span class="c">!&lt; Global number of nodes</span>
<a name="ln-915"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">)</span>                                       <span class="kd">::</span> <span class="n">DataOffset</span>          <span class="c">!&lt; Node offset for a particular grid</span>
<a name="ln-916"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">I4P</span><span class="p">)</span>                                           <span class="kd">::</span> <span class="n">GridID</span>              <span class="c">!&lt; Index to loop on GridID&#39;s</span>
<a name="ln-917"></a>        <span class="k">type</span><span class="p">(</span><span class="n">mpi_env_t</span><span class="p">),</span> <span class="k">pointer</span>                               <span class="kd">::</span> <span class="n">MPIEnvironment</span>      <span class="c">!&lt; MPI Environment</span>
<a name="ln-918"></a>    <span class="c">!-----------------------------------------------------------------</span>
<a name="ln-919"></a>        <span class="c">!&lt; @Note: Fixed rank 1?</span>
<a name="ln-920"></a>        <span class="c">!&lt; @Note: Fixed dataset name?</span>
<a name="ln-921"></a>        <span class="c">!&lt; @Note: Fixed rank 1?</span>
<a name="ln-922"></a><span class="cp">#ifdef ENABLE_HDF5</span>
<a name="ln-923"></a>        <span class="n">MPIEnvironment</span> <span class="o">=&gt;</span> <span class="n">this</span><span class="p">%</span><span class="n">GetMPIEnvironment</span><span class="p">()</span>
<a name="ln-924"></a>        <span class="n">assert</span><span class="p">(</span><span class="nb">associated</span><span class="p">(</span><span class="n">MPIEnvironment</span><span class="p">))</span>
<a name="ln-925"></a>        <span class="n">NumberOfComponents</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">GetNumberOfComponentsFromAttributeType</span><span class="p">(</span><span class="k">Type</span><span class="p">),</span> <span class="n">HSIZE_T</span><span class="p">)</span>
<a name="ln-926"></a>        <span class="k">do </span><span class="n">GridID</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">MPIEnvironment</span><span class="p">%</span><span class="n">get_comm_size</span><span class="p">()</span><span class="o">-</span><span class="mi">1</span>
<a name="ln-927"></a>            <span class="k">call </span><span class="n">this</span><span class="p">%</span><span class="n">CalculateAttributeDimensions</span><span class="p">(</span><span class="n">GridID</span><span class="o">=</span><span class="n">GridID</span><span class="p">,</span> <span class="n">Center</span><span class="o">=</span><span class="n">Center</span><span class="p">,</span> <span class="n">LocalNumberOfData</span><span class="o">=</span><span class="n">LocalNumberOfData</span><span class="p">)</span>
<a name="ln-928"></a>            <span class="k">call </span><span class="n">this</span><span class="p">%</span><span class="n">WriteMetaData</span><span class="p">(</span>                                                           <span class="p">&amp;</span>
<a name="ln-929"></a>                    <span class="n">DatasetName</span>     <span class="o">=</span> <span class="n">Name</span><span class="o">//</span><span class="s1">&#39;_&#39;</span><span class="o">//</span><span class="nb">trim</span><span class="p">(</span><span class="nb">adjustl</span><span class="p">(</span><span class="n">str</span><span class="p">(</span><span class="n">no_sign</span><span class="o">=</span><span class="p">.</span><span class="n">true</span><span class="p">.,</span><span class="n">n</span><span class="o">=</span><span class="n">GridID</span><span class="p">))),</span>  <span class="p">&amp;</span>
<a name="ln-930"></a>                    <span class="n">DatasetDims</span>     <span class="o">=</span> <span class="p">(</span><span class="o">/</span><span class="n">LocalNumberOfData</span><span class="o">*</span><span class="n">NumberOfComponents</span><span class="o">/</span><span class="p">),</span>                <span class="p">&amp;</span>
<a name="ln-931"></a>                    <span class="n">HyperSlabOffset</span> <span class="o">=</span> <span class="p">(</span><span class="o">/</span><span class="mi">0_HSIZE_T</span><span class="o">/</span><span class="p">),</span>                                           <span class="p">&amp;</span>
<a name="ln-932"></a>                    <span class="n">HyperSlabSize</span>   <span class="o">=</span> <span class="p">(</span><span class="o">/</span><span class="n">LocalNumberOfData</span><span class="o">*</span><span class="n">NumberOfComponents</span><span class="o">/</span><span class="p">),</span>                <span class="p">&amp;</span>
<a name="ln-933"></a>                    <span class="n">Values</span>          <span class="o">=</span> <span class="n">Values</span><span class="p">)</span>
<a name="ln-934"></a>        <span class="n">enddo</span>
<a name="ln-935"></a>        <span class="k">call </span><span class="n">this</span><span class="p">%</span><span class="n">CalculateAttributeDimensions</span><span class="p">(</span><span class="n">GridID</span><span class="o">=</span><span class="n">MPIEnvironment</span><span class="p">%</span><span class="n">get_rank</span><span class="p">(),</span> <span class="n">Center</span><span class="o">=</span><span class="n">Center</span><span class="p">,</span> <span class="n">LocalNumberOfData</span><span class="o">=</span><span class="n">LocalNumberOfData</span><span class="p">)</span>
<a name="ln-936"></a>        <span class="k">call </span><span class="n">this</span><span class="p">%</span><span class="n">WriteData</span><span class="p">(</span>                                                                                   <span class="p">&amp;</span>
<a name="ln-937"></a>                <span class="n">DatasetName</span>     <span class="o">=</span> <span class="n">Name</span><span class="o">//</span><span class="s1">&#39;_&#39;</span><span class="o">//</span><span class="nb">trim</span><span class="p">(</span><span class="nb">adjustl</span><span class="p">(</span><span class="n">str</span><span class="p">(</span><span class="n">no_sign</span><span class="o">=</span><span class="p">.</span><span class="n">true</span><span class="p">.,</span><span class="n">n</span><span class="o">=</span><span class="n">MPIEnvironment</span><span class="p">%</span><span class="n">get_rank</span><span class="p">()))),</span>       <span class="p">&amp;</span>
<a name="ln-938"></a>                <span class="n">DatasetDims</span>     <span class="o">=</span> <span class="p">(</span><span class="o">/</span><span class="n">LocalNumberOfData</span><span class="o">*</span><span class="n">NumberOfComponents</span><span class="o">/</span><span class="p">),</span>                                        <span class="p">&amp;</span>
<a name="ln-939"></a>                <span class="n">HyperSlabOffset</span> <span class="o">=</span> <span class="p">(</span><span class="o">/</span><span class="mi">0_HSIZE_T</span><span class="o">/</span><span class="p">),</span>                                                                   <span class="p">&amp;</span>
<a name="ln-940"></a>                <span class="n">HyperSlabSize</span>   <span class="o">=</span> <span class="p">(</span><span class="o">/</span><span class="n">LocalNumberOfData</span><span class="o">*</span><span class="n">NumberOfComponents</span><span class="o">/</span><span class="p">),</span>                                        <span class="p">&amp;</span>
<a name="ln-941"></a>                <span class="n">Values</span>          <span class="o">=</span> <span class="n">Values</span><span class="p">)</span>
<a name="ln-942"></a><span class="cp">#endif</span>
<a name="ln-943"></a>    <span class="k">end subroutine </span><span class="n">hdf5_dataset_per_process_handler_WriteAttribute_R4P</span>
<a name="ln-944"></a>
<a name="ln-945"></a>
<a name="ln-946"></a>    <span class="k">subroutine </span><span class="n">hdf5_dataset_per_process_handler_WriteAttribute_R8P</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">Name</span><span class="p">,</span> <span class="k">Type</span><span class="p">,</span> <span class="n">Center</span><span class="p">,</span> <span class="n">Values</span><span class="p">)</span>
<a name="ln-947"></a>    <span class="c">!-----------------------------------------------------------------</span>
<a name="ln-948"></a>    <span class="c">!&lt; Writes R8P attriburte values to a HDF5 file for the dataset per process strategy</span>
<a name="ln-949"></a>    <span class="c">!----------------------------------------------------------------- </span>
<a name="ln-950"></a>        <span class="k">class</span><span class="p">(</span><span class="n">hdf5_dataset_per_process_handler_t</span><span class="p">),</span>  <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">this</span>                <span class="c">!&lt; HDF5 dataset per process handler for structured grids</span>
<a name="ln-951"></a>        <span class="kt">character</span><span class="p">(</span><span class="nb">len</span><span class="o">=*</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">Name</span>                <span class="c">!&lt; Attribute name</span>
<a name="ln-952"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">I4P</span><span class="p">),</span>                               <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="k">Type</span>                <span class="c">!&lt; Attribute type (Scalar, Vector, etc.)</span>
<a name="ln-953"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">I4P</span><span class="p">),</span>                               <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">Center</span>              <span class="c">!&lt; Attribute center at (Node, Cell, etc.)</span>
<a name="ln-954"></a>        <span class="kt">real</span><span class="p">(</span><span class="n">R8P</span><span class="p">),</span>                                  <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">Values</span><span class="p">(:)</span>           <span class="c">!&lt; R8P Attribute values</span>
<a name="ln-955"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">)</span>                                       <span class="kd">::</span> <span class="n">GlobalNumberOfData</span>  <span class="c">!&lt; Global number of data</span>
<a name="ln-956"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">)</span>                                       <span class="kd">::</span> <span class="n">LocalNumberOfData</span>   <span class="c">!&lt; Local number of data</span>
<a name="ln-957"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">)</span>                                       <span class="kd">::</span> <span class="n">NumberOfComponents</span>  <span class="c">!&lt; Global number of nodes</span>
<a name="ln-958"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">)</span>                                       <span class="kd">::</span> <span class="n">DataOffset</span>          <span class="c">!&lt; Node offset for a particular grid</span>
<a name="ln-959"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">I4P</span><span class="p">)</span>                                           <span class="kd">::</span> <span class="n">GridID</span>              <span class="c">!&lt; Index to loop on GridID&#39;s</span>
<a name="ln-960"></a>        <span class="k">type</span><span class="p">(</span><span class="n">mpi_env_t</span><span class="p">),</span> <span class="k">pointer</span>                               <span class="kd">::</span> <span class="n">MPIEnvironment</span>      <span class="c">!&lt; MPI Environment</span>
<a name="ln-961"></a>    <span class="c">!-----------------------------------------------------------------</span>
<a name="ln-962"></a>        <span class="c">!&lt; @Note: Fixed rank 1?</span>
<a name="ln-963"></a>        <span class="c">!&lt; @Note: Fixed dataset name?</span>
<a name="ln-964"></a>        <span class="c">!&lt; @Note: Fixed rank 1?</span>
<a name="ln-965"></a><span class="cp">#ifdef ENABLE_HDF5</span>
<a name="ln-966"></a>        <span class="n">MPIEnvironment</span> <span class="o">=&gt;</span> <span class="n">this</span><span class="p">%</span><span class="n">GetMPIEnvironment</span><span class="p">()</span>
<a name="ln-967"></a>        <span class="n">assert</span><span class="p">(</span><span class="nb">associated</span><span class="p">(</span><span class="n">MPIEnvironment</span><span class="p">))</span>
<a name="ln-968"></a>        <span class="n">NumberOfComponents</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">GetNumberOfComponentsFromAttributeType</span><span class="p">(</span><span class="k">Type</span><span class="p">),</span> <span class="n">HSIZE_T</span><span class="p">)</span>
<a name="ln-969"></a>        <span class="k">do </span><span class="n">GridID</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">MPIEnvironment</span><span class="p">%</span><span class="n">get_comm_size</span><span class="p">()</span><span class="o">-</span><span class="mi">1</span>
<a name="ln-970"></a>            <span class="k">call </span><span class="n">this</span><span class="p">%</span><span class="n">CalculateAttributeDimensions</span><span class="p">(</span><span class="n">GridID</span><span class="o">=</span><span class="n">GridID</span><span class="p">,</span> <span class="n">Center</span><span class="o">=</span><span class="n">Center</span><span class="p">,</span> <span class="n">LocalNumberOfData</span><span class="o">=</span><span class="n">LocalNumberOfData</span><span class="p">)</span>
<a name="ln-971"></a>            <span class="k">call </span><span class="n">this</span><span class="p">%</span><span class="n">WriteMetaData</span><span class="p">(</span>                                                           <span class="p">&amp;</span>
<a name="ln-972"></a>                    <span class="n">DatasetName</span>     <span class="o">=</span> <span class="n">Name</span><span class="o">//</span><span class="s1">&#39;_&#39;</span><span class="o">//</span><span class="nb">trim</span><span class="p">(</span><span class="nb">adjustl</span><span class="p">(</span><span class="n">str</span><span class="p">(</span><span class="n">no_sign</span><span class="o">=</span><span class="p">.</span><span class="n">true</span><span class="p">.,</span><span class="n">n</span><span class="o">=</span><span class="n">GridID</span><span class="p">))),</span>  <span class="p">&amp;</span>
<a name="ln-973"></a>                    <span class="n">DatasetDims</span>     <span class="o">=</span> <span class="p">(</span><span class="o">/</span><span class="n">LocalNumberOfData</span><span class="o">*</span><span class="n">NumberOfComponents</span><span class="o">/</span><span class="p">),</span>                <span class="p">&amp;</span>
<a name="ln-974"></a>                    <span class="n">HyperSlabOffset</span> <span class="o">=</span> <span class="p">(</span><span class="o">/</span><span class="mi">0_HSIZE_T</span><span class="o">/</span><span class="p">),</span>                                           <span class="p">&amp;</span>
<a name="ln-975"></a>                    <span class="n">HyperSlabSize</span>   <span class="o">=</span> <span class="p">(</span><span class="o">/</span><span class="n">LocalNumberOfData</span><span class="o">*</span><span class="n">NumberOfComponents</span><span class="o">/</span><span class="p">),</span>                <span class="p">&amp;</span>
<a name="ln-976"></a>                    <span class="n">Values</span>          <span class="o">=</span> <span class="n">Values</span><span class="p">)</span>
<a name="ln-977"></a>        <span class="n">enddo</span>
<a name="ln-978"></a>        <span class="k">call </span><span class="n">this</span><span class="p">%</span><span class="n">CalculateAttributeDimensions</span><span class="p">(</span><span class="n">GridID</span><span class="o">=</span><span class="n">MPIEnvironment</span><span class="p">%</span><span class="n">get_rank</span><span class="p">(),</span> <span class="n">Center</span><span class="o">=</span><span class="n">Center</span><span class="p">,</span> <span class="n">LocalNumberOfData</span><span class="o">=</span><span class="n">LocalNumberOfData</span><span class="p">)</span>
<a name="ln-979"></a>        <span class="k">call </span><span class="n">this</span><span class="p">%</span><span class="n">WriteData</span><span class="p">(</span>                                                                                       <span class="p">&amp;</span>
<a name="ln-980"></a>                <span class="n">DatasetName</span>     <span class="o">=</span> <span class="n">Name</span><span class="o">//</span><span class="s1">&#39;_&#39;</span><span class="o">//</span><span class="nb">trim</span><span class="p">(</span><span class="nb">adjustl</span><span class="p">(</span><span class="n">str</span><span class="p">(</span><span class="n">no_sign</span><span class="o">=</span><span class="p">.</span><span class="n">true</span><span class="p">.,</span><span class="n">n</span><span class="o">=</span><span class="n">MPIEnvironment</span><span class="p">%</span><span class="n">get_rank</span><span class="p">()))),</span>       <span class="p">&amp;</span>
<a name="ln-981"></a>                <span class="n">DatasetDims</span>     <span class="o">=</span> <span class="p">(</span><span class="o">/</span><span class="n">LocalNumberOfData</span><span class="o">*</span><span class="n">NumberOfComponents</span><span class="o">/</span><span class="p">),</span>                                        <span class="p">&amp;</span>
<a name="ln-982"></a>                <span class="n">HyperSlabOffset</span> <span class="o">=</span> <span class="p">(</span><span class="o">/</span><span class="mi">0_HSIZE_T</span><span class="o">/</span><span class="p">),</span>                                                                   <span class="p">&amp;</span>
<a name="ln-983"></a>                <span class="n">HyperSlabSize</span>   <span class="o">=</span> <span class="p">(</span><span class="o">/</span><span class="n">LocalNumberOfData</span><span class="o">*</span><span class="n">NumberOfComponents</span><span class="o">/</span><span class="p">),</span>                                        <span class="p">&amp;</span>
<a name="ln-984"></a>                <span class="n">Values</span>          <span class="o">=</span> <span class="n">Values</span><span class="p">)</span>
<a name="ln-985"></a><span class="cp">#endif</span>
<a name="ln-986"></a>    <span class="k">end subroutine </span><span class="n">hdf5_dataset_per_process_handler_WriteAttribute_R8P</span>
<a name="ln-987"></a>
<a name="ln-988"></a>
<a name="ln-989"></a>    <span class="k">subroutine </span><span class="n">hdf5_dataset_per_process_handler_ReadAttribute_I4P</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">Name</span><span class="p">,</span> <span class="k">Type</span><span class="p">,</span> <span class="n">Center</span><span class="p">,</span> <span class="n">Values</span><span class="p">)</span>
<a name="ln-990"></a>    <span class="c">!-----------------------------------------------------------------</span>
<a name="ln-991"></a>    <span class="c">!&lt; Writes I4P attriburte values to a HDF5 file for the dataset per process strategy</span>
<a name="ln-992"></a>    <span class="c">!----------------------------------------------------------------- </span>
<a name="ln-993"></a>        <span class="k">class</span><span class="p">(</span><span class="n">hdf5_dataset_per_process_handler_t</span><span class="p">),</span>  <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">this</span>     <span class="c">!&lt; HDF5 dataset per process handler for structured grids</span>
<a name="ln-994"></a>        <span class="kt">character</span><span class="p">(</span><span class="nb">len</span><span class="o">=*</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">Name</span>                <span class="c">!&lt; Attribute name</span>
<a name="ln-995"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">I4P</span><span class="p">),</span>                               <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="k">Type</span>                <span class="c">!&lt; Attribute type (Scalar, Vector, etc.)</span>
<a name="ln-996"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">I4P</span><span class="p">),</span>                               <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">Center</span>              <span class="c">!&lt; Attribute center at (Node, Cell, etc.)</span>
<a name="ln-997"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">I4P</span><span class="p">),</span> <span class="k">allocatable</span><span class="p">,</span>                  <span class="k">intent</span><span class="p">(</span><span class="n">OUT</span><span class="p">)</span><span class="kd">::</span> <span class="n">Values</span><span class="p">(:)</span>           <span class="c">!&lt; I4P Attribute values</span>
<a name="ln-998"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">)</span>                                       <span class="kd">::</span> <span class="n">GlobalNumberOfData</span>  <span class="c">!&lt; Global number of data</span>
<a name="ln-999"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">)</span>                                       <span class="kd">::</span> <span class="n">LocalNumberOfData</span>   <span class="c">!&lt; Local number of data</span>
<a name="ln-1000"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">)</span>                                       <span class="kd">::</span> <span class="n">NumberOfComponents</span>  <span class="c">!&lt; Global number of nodes</span>
<a name="ln-1001"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">)</span>                                       <span class="kd">::</span> <span class="n">DataOffset</span>          <span class="c">!&lt; Node offset for a particular grid</span>
<a name="ln-1002"></a>        <span class="k">type</span><span class="p">(</span><span class="n">mpi_env_t</span><span class="p">),</span> <span class="k">pointer</span>                               <span class="kd">::</span> <span class="n">MPIEnvironment</span>      <span class="c">!&lt; MPI Environment</span>
<a name="ln-1003"></a>    <span class="c">!-----------------------------------------------------------------</span>
<a name="ln-1004"></a>        <span class="c">!&lt; @Note: Fixed rank 1?</span>
<a name="ln-1005"></a>        <span class="c">!&lt; @Note: Fixed dataset name?</span>
<a name="ln-1006"></a>        <span class="c">!&lt; @Note: Fixed rank 1?</span>
<a name="ln-1007"></a><span class="cp">#ifdef ENABLE_HDF5</span>
<a name="ln-1008"></a>        <span class="n">MPIEnvironment</span> <span class="o">=&gt;</span> <span class="n">this</span><span class="p">%</span><span class="n">GetMPIEnvironment</span><span class="p">()</span>
<a name="ln-1009"></a>        <span class="n">assert</span><span class="p">(</span><span class="nb">associated</span><span class="p">(</span><span class="n">MPIEnvironment</span><span class="p">))</span>
<a name="ln-1010"></a>        <span class="n">NumberOfComponents</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">GetNumberOfComponentsFromAttributeType</span><span class="p">(</span><span class="k">Type</span><span class="p">),</span> <span class="n">HSIZE_T</span><span class="p">)</span>
<a name="ln-1011"></a>        <span class="k">call </span><span class="n">this</span><span class="p">%</span><span class="n">CalculateAttributeDimensions</span><span class="p">(</span>                      <span class="p">&amp;</span>
<a name="ln-1012"></a>                <span class="n">GridID</span>             <span class="o">=</span> <span class="n">MPIEnvironment</span><span class="p">%</span><span class="n">get_rank</span><span class="p">(),</span>      <span class="p">&amp;</span>
<a name="ln-1013"></a>                <span class="n">Center</span>             <span class="o">=</span> <span class="n">Center</span><span class="p">,</span>                         <span class="p">&amp;</span>
<a name="ln-1014"></a>                <span class="n">LocalNumberOfData</span>  <span class="o">=</span> <span class="n">LocalNumberOfData</span><span class="p">)</span>
<a name="ln-1015"></a>        <span class="k">call </span><span class="n">this</span><span class="p">%</span><span class="n">ReadDataset</span><span class="p">(</span>                                                                                     <span class="p">&amp;</span>
<a name="ln-1016"></a>                <span class="n">DatasetName</span>     <span class="o">=</span> <span class="n">Name</span><span class="o">//</span><span class="s1">&#39;_&#39;</span><span class="o">//</span><span class="nb">trim</span><span class="p">(</span><span class="nb">adjustl</span><span class="p">(</span><span class="n">str</span><span class="p">(</span><span class="n">no_sign</span><span class="o">=</span><span class="p">.</span><span class="n">true</span><span class="p">.,</span><span class="n">n</span><span class="o">=</span><span class="n">MPIEnvironment</span><span class="p">%</span><span class="n">get_rank</span><span class="p">()))),</span>       <span class="p">&amp;</span>
<a name="ln-1017"></a>                <span class="n">DatasetDims</span>     <span class="o">=</span> <span class="p">(</span><span class="o">/</span><span class="n">LocalNumberOfData</span><span class="o">*</span><span class="n">NumberOfComponents</span><span class="o">/</span><span class="p">),</span>                                        <span class="p">&amp;</span>
<a name="ln-1018"></a>                <span class="n">HyperSlabOffset</span> <span class="o">=</span> <span class="p">(</span><span class="o">/</span><span class="mi">0_HSIZE_T</span><span class="o">/</span><span class="p">),</span>                                                                   <span class="p">&amp;</span>
<a name="ln-1019"></a>                <span class="n">HyperSlabSize</span>   <span class="o">=</span> <span class="p">(</span><span class="o">/</span><span class="n">LocalNumberOfData</span><span class="o">*</span><span class="n">NumberOfComponents</span><span class="o">/</span><span class="p">),</span>                                        <span class="p">&amp;</span>
<a name="ln-1020"></a>                <span class="n">Values</span>          <span class="o">=</span> <span class="n">Values</span><span class="p">)</span>
<a name="ln-1021"></a><span class="cp">#endif</span>
<a name="ln-1022"></a>    <span class="k">end subroutine </span><span class="n">hdf5_dataset_per_process_handler_ReadAttribute_I4P</span>
<a name="ln-1023"></a>
<a name="ln-1024"></a>
<a name="ln-1025"></a>    <span class="k">subroutine </span><span class="n">hdf5_dataset_per_process_handler_ReadAttribute_I8P</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">Name</span><span class="p">,</span> <span class="k">Type</span><span class="p">,</span> <span class="n">Center</span><span class="p">,</span> <span class="n">Values</span><span class="p">)</span>
<a name="ln-1026"></a>    <span class="c">!-----------------------------------------------------------------</span>
<a name="ln-1027"></a>    <span class="c">!&lt; Writes I4P attriburte values to a HDF5 file for the dataset per process strategy</span>
<a name="ln-1028"></a>    <span class="c">!----------------------------------------------------------------- </span>
<a name="ln-1029"></a>        <span class="k">class</span><span class="p">(</span><span class="n">hdf5_dataset_per_process_handler_t</span><span class="p">),</span>  <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">this</span>     <span class="c">!&lt; HDF5 dataset per process handler for structured grids</span>
<a name="ln-1030"></a>        <span class="kt">character</span><span class="p">(</span><span class="nb">len</span><span class="o">=*</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">Name</span>                <span class="c">!&lt; Attribute name</span>
<a name="ln-1031"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">I4P</span><span class="p">),</span>                               <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="k">Type</span>                <span class="c">!&lt; Attribute type (Scalar, Vector, etc.)</span>
<a name="ln-1032"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">I4P</span><span class="p">),</span>                               <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">Center</span>              <span class="c">!&lt; Attribute center at (Node, Cell, etc.)</span>
<a name="ln-1033"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">I8P</span><span class="p">),</span> <span class="k">allocatable</span><span class="p">,</span>                  <span class="k">intent</span><span class="p">(</span><span class="n">OUT</span><span class="p">)</span><span class="kd">::</span> <span class="n">Values</span><span class="p">(:)</span>           <span class="c">!&lt; I4P Attribute values</span>
<a name="ln-1034"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">)</span>                                       <span class="kd">::</span> <span class="n">GlobalNumberOfData</span>  <span class="c">!&lt; Global number of data</span>
<a name="ln-1035"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">)</span>                                       <span class="kd">::</span> <span class="n">LocalNumberOfData</span>   <span class="c">!&lt; Local number of data</span>
<a name="ln-1036"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">)</span>                                       <span class="kd">::</span> <span class="n">NumberOfComponents</span>  <span class="c">!&lt; Global number of nodes</span>
<a name="ln-1037"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">)</span>                                       <span class="kd">::</span> <span class="n">DataOffset</span>          <span class="c">!&lt; Node offset for a particular grid</span>
<a name="ln-1038"></a>        <span class="k">type</span><span class="p">(</span><span class="n">mpi_env_t</span><span class="p">),</span> <span class="k">pointer</span>                               <span class="kd">::</span> <span class="n">MPIEnvironment</span>      <span class="c">!&lt; MPI Environment</span>
<a name="ln-1039"></a>    <span class="c">!-----------------------------------------------------------------</span>
<a name="ln-1040"></a>        <span class="c">!&lt; @Note: Fixed rank 1?</span>
<a name="ln-1041"></a>        <span class="c">!&lt; @Note: Fixed dataset name?</span>
<a name="ln-1042"></a>        <span class="c">!&lt; @Note: Fixed rank 1?</span>
<a name="ln-1043"></a><span class="cp">#ifdef ENABLE_HDF5</span>
<a name="ln-1044"></a>        <span class="n">MPIEnvironment</span> <span class="o">=&gt;</span> <span class="n">this</span><span class="p">%</span><span class="n">GetMPIEnvironment</span><span class="p">()</span>
<a name="ln-1045"></a>        <span class="n">assert</span><span class="p">(</span><span class="nb">associated</span><span class="p">(</span><span class="n">MPIEnvironment</span><span class="p">))</span>
<a name="ln-1046"></a>        <span class="n">NumberOfComponents</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">GetNumberOfComponentsFromAttributeType</span><span class="p">(</span><span class="k">Type</span><span class="p">),</span> <span class="n">HSIZE_T</span><span class="p">)</span>
<a name="ln-1047"></a>        <span class="k">call </span><span class="n">this</span><span class="p">%</span><span class="n">CalculateAttributeDimensions</span><span class="p">(</span>                      <span class="p">&amp;</span>
<a name="ln-1048"></a>                <span class="n">GridID</span>             <span class="o">=</span> <span class="n">MPIEnvironment</span><span class="p">%</span><span class="n">get_rank</span><span class="p">(),</span>      <span class="p">&amp;</span>
<a name="ln-1049"></a>                <span class="n">Center</span>             <span class="o">=</span> <span class="n">Center</span><span class="p">,</span>                         <span class="p">&amp;</span>
<a name="ln-1050"></a>                <span class="n">LocalNumberOfData</span>  <span class="o">=</span> <span class="n">LocalNumberOfData</span><span class="p">)</span>
<a name="ln-1051"></a>        <span class="k">call </span><span class="n">this</span><span class="p">%</span><span class="n">ReadDataset</span><span class="p">(</span>                                                                                     <span class="p">&amp;</span>
<a name="ln-1052"></a>                <span class="n">DatasetName</span>     <span class="o">=</span> <span class="n">Name</span><span class="o">//</span><span class="s1">&#39;_&#39;</span><span class="o">//</span><span class="nb">trim</span><span class="p">(</span><span class="nb">adjustl</span><span class="p">(</span><span class="n">str</span><span class="p">(</span><span class="n">no_sign</span><span class="o">=</span><span class="p">.</span><span class="n">true</span><span class="p">.,</span><span class="n">n</span><span class="o">=</span><span class="n">MPIEnvironment</span><span class="p">%</span><span class="n">get_rank</span><span class="p">()))),</span>       <span class="p">&amp;</span>
<a name="ln-1053"></a>                <span class="n">DatasetDims</span>     <span class="o">=</span> <span class="p">(</span><span class="o">/</span><span class="n">LocalNumberOfData</span><span class="o">*</span><span class="n">NumberOfComponents</span><span class="o">/</span><span class="p">),</span>                                        <span class="p">&amp;</span>
<a name="ln-1054"></a>                <span class="n">HyperSlabOffset</span> <span class="o">=</span> <span class="p">(</span><span class="o">/</span><span class="mi">0_HSIZE_T</span><span class="o">/</span><span class="p">),</span>                                                                   <span class="p">&amp;</span>
<a name="ln-1055"></a>                <span class="n">HyperSlabSize</span>   <span class="o">=</span> <span class="p">(</span><span class="o">/</span><span class="n">LocalNumberOfData</span><span class="o">*</span><span class="n">NumberOfComponents</span><span class="o">/</span><span class="p">),</span>                                        <span class="p">&amp;</span>
<a name="ln-1056"></a>                <span class="n">Values</span>          <span class="o">=</span> <span class="n">Values</span><span class="p">)</span>
<a name="ln-1057"></a><span class="cp">#endif</span>
<a name="ln-1058"></a>    <span class="k">end subroutine </span><span class="n">hdf5_dataset_per_process_handler_ReadAttribute_I8P</span>
<a name="ln-1059"></a>
<a name="ln-1060"></a>
<a name="ln-1061"></a>    <span class="k">subroutine </span><span class="n">hdf5_dataset_per_process_handler_ReadAttribute_R4P</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">Name</span><span class="p">,</span> <span class="k">Type</span><span class="p">,</span> <span class="n">Center</span><span class="p">,</span> <span class="n">Values</span><span class="p">)</span>
<a name="ln-1062"></a>    <span class="c">!-----------------------------------------------------------------</span>
<a name="ln-1063"></a>    <span class="c">!&lt; Writes I4P attriburte values to a HDF5 file for the dataset per process strategy</span>
<a name="ln-1064"></a>    <span class="c">!----------------------------------------------------------------- </span>
<a name="ln-1065"></a>        <span class="k">class</span><span class="p">(</span><span class="n">hdf5_dataset_per_process_handler_t</span><span class="p">),</span>  <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">this</span>     <span class="c">!&lt; HDF5 dataset per process handler for structured grids</span>
<a name="ln-1066"></a>        <span class="kt">character</span><span class="p">(</span><span class="nb">len</span><span class="o">=*</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">Name</span>                <span class="c">!&lt; Attribute name</span>
<a name="ln-1067"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">I4P</span><span class="p">),</span>                               <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="k">Type</span>                <span class="c">!&lt; Attribute type (Scalar, Vector, etc.)</span>
<a name="ln-1068"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">I4P</span><span class="p">),</span>                               <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">Center</span>              <span class="c">!&lt; Attribute center at (Node, Cell, etc.)</span>
<a name="ln-1069"></a>        <span class="kt">real</span><span class="p">(</span><span class="n">R4P</span><span class="p">),</span> <span class="k">allocatable</span><span class="p">,</span>                     <span class="k">intent</span><span class="p">(</span><span class="n">OUT</span><span class="p">)</span><span class="kd">::</span> <span class="n">Values</span><span class="p">(:)</span>           <span class="c">!&lt; I4P Attribute values</span>
<a name="ln-1070"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">)</span>                                       <span class="kd">::</span> <span class="n">GlobalNumberOfData</span>  <span class="c">!&lt; Global number of data</span>
<a name="ln-1071"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">)</span>                                       <span class="kd">::</span> <span class="n">LocalNumberOfData</span>   <span class="c">!&lt; Local number of data</span>
<a name="ln-1072"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">)</span>                                       <span class="kd">::</span> <span class="n">NumberOfComponents</span>  <span class="c">!&lt; Global number of nodes</span>
<a name="ln-1073"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">)</span>                                       <span class="kd">::</span> <span class="n">DataOffset</span>          <span class="c">!&lt; Node offset for a particular grid</span>
<a name="ln-1074"></a>        <span class="k">type</span><span class="p">(</span><span class="n">mpi_env_t</span><span class="p">),</span> <span class="k">pointer</span>                               <span class="kd">::</span> <span class="n">MPIEnvironment</span>      <span class="c">!&lt; MPI Environment</span>
<a name="ln-1075"></a>    <span class="c">!-----------------------------------------------------------------</span>
<a name="ln-1076"></a>        <span class="c">!&lt; @Note: Fixed rank 1?</span>
<a name="ln-1077"></a>        <span class="c">!&lt; @Note: Fixed dataset name?</span>
<a name="ln-1078"></a>        <span class="c">!&lt; @Note: Fixed rank 1?</span>
<a name="ln-1079"></a><span class="cp">#ifdef ENABLE_HDF5</span>
<a name="ln-1080"></a>        <span class="n">MPIEnvironment</span> <span class="o">=&gt;</span> <span class="n">this</span><span class="p">%</span><span class="n">GetMPIEnvironment</span><span class="p">()</span>
<a name="ln-1081"></a>        <span class="n">assert</span><span class="p">(</span><span class="nb">associated</span><span class="p">(</span><span class="n">MPIEnvironment</span><span class="p">))</span>
<a name="ln-1082"></a>        <span class="n">NumberOfComponents</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">GetNumberOfComponentsFromAttributeType</span><span class="p">(</span><span class="k">Type</span><span class="p">),</span> <span class="n">HSIZE_T</span><span class="p">)</span>
<a name="ln-1083"></a>        <span class="k">call </span><span class="n">this</span><span class="p">%</span><span class="n">CalculateAttributeDimensions</span><span class="p">(</span>                      <span class="p">&amp;</span>
<a name="ln-1084"></a>                <span class="n">GridID</span>             <span class="o">=</span> <span class="n">MPIEnvironment</span><span class="p">%</span><span class="n">get_rank</span><span class="p">(),</span>      <span class="p">&amp;</span>
<a name="ln-1085"></a>                <span class="n">Center</span>             <span class="o">=</span> <span class="n">Center</span><span class="p">,</span>                         <span class="p">&amp;</span>
<a name="ln-1086"></a>                <span class="n">LocalNumberOfData</span>  <span class="o">=</span> <span class="n">LocalNumberOfData</span><span class="p">)</span>
<a name="ln-1087"></a>        <span class="k">call </span><span class="n">this</span><span class="p">%</span><span class="n">ReadDataset</span><span class="p">(</span>                                                                                     <span class="p">&amp;</span>
<a name="ln-1088"></a>                <span class="n">DatasetName</span>     <span class="o">=</span> <span class="n">Name</span><span class="o">//</span><span class="s1">&#39;_&#39;</span><span class="o">//</span><span class="nb">trim</span><span class="p">(</span><span class="nb">adjustl</span><span class="p">(</span><span class="n">str</span><span class="p">(</span><span class="n">no_sign</span><span class="o">=</span><span class="p">.</span><span class="n">true</span><span class="p">.,</span><span class="n">n</span><span class="o">=</span><span class="n">MPIEnvironment</span><span class="p">%</span><span class="n">get_rank</span><span class="p">()))),</span>       <span class="p">&amp;</span>
<a name="ln-1089"></a>                <span class="n">DatasetDims</span>     <span class="o">=</span> <span class="p">(</span><span class="o">/</span><span class="n">LocalNumberOfData</span><span class="o">*</span><span class="n">NumberOfComponents</span><span class="o">/</span><span class="p">),</span>                                        <span class="p">&amp;</span>
<a name="ln-1090"></a>                <span class="n">HyperSlabOffset</span> <span class="o">=</span> <span class="p">(</span><span class="o">/</span><span class="mi">0_HSIZE_T</span><span class="o">/</span><span class="p">),</span>                                                                   <span class="p">&amp;</span>
<a name="ln-1091"></a>                <span class="n">HyperSlabSize</span>   <span class="o">=</span> <span class="p">(</span><span class="o">/</span><span class="n">LocalNumberOfData</span><span class="o">*</span><span class="n">NumberOfComponents</span><span class="o">/</span><span class="p">),</span>                                        <span class="p">&amp;</span>
<a name="ln-1092"></a>                <span class="n">Values</span>          <span class="o">=</span> <span class="n">Values</span><span class="p">)</span>
<a name="ln-1093"></a><span class="cp">#endif</span>
<a name="ln-1094"></a>    <span class="k">end subroutine </span><span class="n">hdf5_dataset_per_process_handler_ReadAttribute_R4P</span>
<a name="ln-1095"></a>
<a name="ln-1096"></a>
<a name="ln-1097"></a>    <span class="k">subroutine </span><span class="n">hdf5_dataset_per_process_handler_ReadAttribute_R8P</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">Name</span><span class="p">,</span> <span class="k">Type</span><span class="p">,</span> <span class="n">Center</span><span class="p">,</span> <span class="n">Values</span><span class="p">)</span>
<a name="ln-1098"></a>    <span class="c">!-----------------------------------------------------------------</span>
<a name="ln-1099"></a>    <span class="c">!&lt; Writes I4P attriburte values to a HDF5 file for the dataset per process strategy</span>
<a name="ln-1100"></a>    <span class="c">!----------------------------------------------------------------- </span>
<a name="ln-1101"></a>        <span class="k">class</span><span class="p">(</span><span class="n">hdf5_dataset_per_process_handler_t</span><span class="p">),</span>  <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">this</span>     <span class="c">!&lt; HDF5 dataset per process handler for structured grids</span>
<a name="ln-1102"></a>        <span class="kt">character</span><span class="p">(</span><span class="nb">len</span><span class="o">=*</span><span class="p">),</span>                           <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">Name</span>                <span class="c">!&lt; Attribute name</span>
<a name="ln-1103"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">I4P</span><span class="p">),</span>                               <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="k">Type</span>                <span class="c">!&lt; Attribute type (Scalar, Vector, etc.)</span>
<a name="ln-1104"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">I4P</span><span class="p">),</span>                               <span class="k">intent</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span> <span class="kd">::</span> <span class="n">Center</span>              <span class="c">!&lt; Attribute center at (Node, Cell, etc.)</span>
<a name="ln-1105"></a>        <span class="kt">real</span><span class="p">(</span><span class="n">R8P</span><span class="p">),</span> <span class="k">allocatable</span><span class="p">,</span>                     <span class="k">intent</span><span class="p">(</span><span class="n">OUT</span><span class="p">)</span><span class="kd">::</span> <span class="n">Values</span><span class="p">(:)</span>           <span class="c">!&lt; I4P Attribute values</span>
<a name="ln-1106"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">)</span>                                       <span class="kd">::</span> <span class="n">GlobalNumberOfData</span>  <span class="c">!&lt; Global number of data</span>
<a name="ln-1107"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">)</span>                                       <span class="kd">::</span> <span class="n">LocalNumberOfData</span>   <span class="c">!&lt; Local number of data</span>
<a name="ln-1108"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">)</span>                                       <span class="kd">::</span> <span class="n">NumberOfComponents</span>  <span class="c">!&lt; Global number of nodes</span>
<a name="ln-1109"></a>        <span class="kt">integer</span><span class="p">(</span><span class="n">HSIZE_T</span><span class="p">)</span>                                       <span class="kd">::</span> <span class="n">DataOffset</span>          <span class="c">!&lt; Node offset for a particular grid</span>
<a name="ln-1110"></a>        <span class="k">type</span><span class="p">(</span><span class="n">mpi_env_t</span><span class="p">),</span> <span class="k">pointer</span>                               <span class="kd">::</span> <span class="n">MPIEnvironment</span>      <span class="c">!&lt; MPI Environment</span>
<a name="ln-1111"></a>    <span class="c">!-----------------------------------------------------------------</span>
<a name="ln-1112"></a>        <span class="c">!&lt; @Note: Fixed rank 1?</span>
<a name="ln-1113"></a>        <span class="c">!&lt; @Note: Fixed dataset name?</span>
<a name="ln-1114"></a>        <span class="c">!&lt; @Note: Fixed rank 1?</span>
<a name="ln-1115"></a><span class="cp">#ifdef ENABLE_HDF5</span>
<a name="ln-1116"></a>        <span class="n">MPIEnvironment</span> <span class="o">=&gt;</span> <span class="n">this</span><span class="p">%</span><span class="n">GetMPIEnvironment</span><span class="p">()</span>
<a name="ln-1117"></a>        <span class="n">assert</span><span class="p">(</span><span class="nb">associated</span><span class="p">(</span><span class="n">MPIEnvironment</span><span class="p">))</span>
<a name="ln-1118"></a>        <span class="n">NumberOfComponents</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">GetNumberOfComponentsFromAttributeType</span><span class="p">(</span><span class="k">Type</span><span class="p">),</span> <span class="n">HSIZE_T</span><span class="p">)</span>
<a name="ln-1119"></a>        <span class="k">call </span><span class="n">this</span><span class="p">%</span><span class="n">CalculateAttributeDimensions</span><span class="p">(</span>                      <span class="p">&amp;</span>
<a name="ln-1120"></a>                <span class="n">GridID</span>             <span class="o">=</span> <span class="n">MPIEnvironment</span><span class="p">%</span><span class="n">get_rank</span><span class="p">(),</span>      <span class="p">&amp;</span>
<a name="ln-1121"></a>                <span class="n">Center</span>             <span class="o">=</span> <span class="n">Center</span><span class="p">,</span>                         <span class="p">&amp;</span>
<a name="ln-1122"></a>                <span class="n">LocalNumberOfData</span>  <span class="o">=</span> <span class="n">LocalNumberOfData</span><span class="p">)</span>
<a name="ln-1123"></a>        <span class="k">call </span><span class="n">this</span><span class="p">%</span><span class="n">ReadDataset</span><span class="p">(</span>                                                                                     <span class="p">&amp;</span>
<a name="ln-1124"></a>                <span class="n">DatasetName</span>     <span class="o">=</span> <span class="n">Name</span><span class="o">//</span><span class="s1">&#39;_&#39;</span><span class="o">//</span><span class="nb">trim</span><span class="p">(</span><span class="nb">adjustl</span><span class="p">(</span><span class="n">str</span><span class="p">(</span><span class="n">no_sign</span><span class="o">=</span><span class="p">.</span><span class="n">true</span><span class="p">.,</span><span class="n">n</span><span class="o">=</span><span class="n">MPIEnvironment</span><span class="p">%</span><span class="n">get_rank</span><span class="p">()))),</span>       <span class="p">&amp;</span>
<a name="ln-1125"></a>                <span class="n">DatasetDims</span>     <span class="o">=</span> <span class="p">(</span><span class="o">/</span><span class="n">LocalNumberOfData</span><span class="o">*</span><span class="n">NumberOfComponents</span><span class="o">/</span><span class="p">),</span>                                        <span class="p">&amp;</span>
<a name="ln-1126"></a>                <span class="n">HyperSlabOffset</span> <span class="o">=</span> <span class="p">(</span><span class="o">/</span><span class="mi">0_HSIZE_T</span><span class="o">/</span><span class="p">),</span>                                                                   <span class="p">&amp;</span>
<a name="ln-1127"></a>                <span class="n">HyperSlabSize</span>   <span class="o">=</span> <span class="p">(</span><span class="o">/</span><span class="n">LocalNumberOfData</span><span class="o">*</span><span class="n">NumberOfComponents</span><span class="o">/</span><span class="p">),</span>                                        <span class="p">&amp;</span>
<a name="ln-1128"></a>                <span class="n">Values</span>          <span class="o">=</span> <span class="n">Values</span><span class="p">)</span>
<a name="ln-1129"></a><span class="cp">#endif</span>
<a name="ln-1130"></a>    <span class="k">end subroutine </span><span class="n">hdf5_dataset_per_process_handler_ReadAttribute_R8P</span>
<a name="ln-1131"></a>
<a name="ln-1132"></a>
<a name="ln-1133"></a><span class="k">end module </span><span class="n">hdf5_dataset_per_process_handler</span>
</pre></div>

    </section>
    </div>
  </div>

  <section class="visible-xs visible-sm hidden-md">
    <hr>
    

<div class="panel panel-default">
  <div class="panel-heading text-left"><h3 class="panel-title"><a data-toggle="collapse" href="#allfiles-1">All Source Files</a></h3></div>
  <div id="allfiles-1" class="panel-collapse collapse">
    <div class="list-group">
      
      <a class="list-group-item" href="../sourcefile/ch_unstructured_hexahedron_perf.f90.html">ch_unstructured_hexahedron_perf.f90</a>
      
      <a class="list-group-item" href="../sourcefile/fox_xdmf.f90.html">fox_xdmf.f90</a>
      
      <a class="list-group-item" href="../sourcefile/hdf5_contiguous_hyperslab_handler.f90.html">hdf5_contiguous_hyperslab_handler.f90</a>
      
      <a class="list-group-item" href="../sourcefile/hdf5_dataset_per_process_handler.f90.html">hdf5_dataset_per_process_handler.f90</a>
      
      <a class="list-group-item" href="../sourcefile/hdf5_handler.f90.html">hdf5_handler.f90</a>
      
      <a class="list-group-item" href="../sourcefile/hdf5_structured_contiguous_hyperslab_handler.f90.html">hdf5_structured_contiguous_hyperslab_handler.f90</a>
      
      <a class="list-group-item" href="../sourcefile/hdf5_structured_dataset_per_process_handler.f90.html">hdf5_structured_dataset_per_process_handler.f90</a>
      
      <a class="list-group-item" href="../sourcefile/hdf5_unstructured_contiguous_hyperslab_handler.f90.html">hdf5_unstructured_contiguous_hyperslab_handler.f90</a>
      
      <a class="list-group-item" href="../sourcefile/hdf5_unstructured_dataset_per_process_handler.f90.html">hdf5_unstructured_dataset_per_process_handler.f90</a>
      
      <a class="list-group-item" href="../sourcefile/mpi_environment.f90.html">mpi_environment.f90</a>
      
      <a class="list-group-item" href="../sourcefile/spatial_grid_descriptor.f90.html">spatial_grid_descriptor.f90</a>
      
      <a class="list-group-item" href="../sourcefile/steps_handler.f90.html">steps_handler.f90</a>
      
      <a class="list-group-item" href="../sourcefile/steps_handler_test.f90.html">steps_handler_test.f90</a>
      
      <a class="list-group-item" href="../sourcefile/structured_contiguous_hyperslab_factory.f90.html">structured_contiguous_hyperslab_factory.f90</a>
      
      <a class="list-group-item" href="../sourcefile/structured_dataset_per_process_factory.f90.html">structured_dataset_per_process_factory.f90</a>
      
      <a class="list-group-item" href="../sourcefile/structured_spatial_grid_descriptor.f90.html">structured_spatial_grid_descriptor.f90</a>
      
      <a class="list-group-item" href="../sourcefile/structured_uniform_grid_descriptor.f90.html">structured_uniform_grid_descriptor.f90</a>
      
      <a class="list-group-item" href="../sourcefile/test_fox_wxml.f90.html">test_FoX_wxml.f90</a>
      
      <a class="list-group-item" href="../sourcefile/test_hdf5_rectilinear_contiguous_hyperslabs_handler.f90.html">test_hdf5_rectilinear_contiguous_hyperslabs_handler.f90</a>
      
      <a class="list-group-item" href="../sourcefile/test_hdf5_rectilinear_dataset_per_process_handler.f90.html">test_hdf5_rectilinear_dataset_per_process_handler.f90</a>
      
      <a class="list-group-item" href="../sourcefile/test_hdf5_regular_contiguous_hyperslabs_handler.f90.html">test_hdf5_regular_contiguous_hyperslabs_handler.f90</a>
      
      <a class="list-group-item" href="../sourcefile/test_hdf5_regular_dataset_per_process_handler.f90.html">test_hdf5_regular_dataset_per_process_handler.f90</a>
      
      <a class="list-group-item" href="../sourcefile/test_hdf5_unstructured_contiguous_hyperslabs_handler.f90.html">test_hdf5_unstructured_contiguous_hyperslabs_handler.f90</a>
      
      <a class="list-group-item" href="../sourcefile/test_hdf5_unstructured_dataset_per_process_handler.f90.html">test_hdf5_unstructured_dataset_per_process_handler.f90</a>
      
      <a class="list-group-item" href="../sourcefile/test_mpi_environment.f90.html">test_mpi_environment.f90</a>
      
      <a class="list-group-item" href="../sourcefile/test_xdmf_attribute.f90.html">test_xdmf_attribute.f90</a>
      
      <a class="list-group-item" href="../sourcefile/test_xdmf_character_data.f90.html">test_xdmf_character_data.f90</a>
      
      <a class="list-group-item" href="../sourcefile/test_xdmf_dataitem.f90.html">test_xdmf_dataitem.f90</a>
      
      <a class="list-group-item" href="../sourcefile/test_xdmf_geometry.f90.html">test_xdmf_geometry.f90</a>
      
      <a class="list-group-item" href="../sourcefile/test_xdmf_grid.f90.html">test_xdmf_grid.f90</a>
      
      <a class="list-group-item" href="../sourcefile/test_xdmf_rectilinear_contiguous_hyperslabs_handler.f90.html">test_xdmf_rectilinear_contiguous_hyperslabs_handler.f90</a>
      
      <a class="list-group-item" href="../sourcefile/test_xdmf_rectilinear_dataset_per_process.f90.html">test_xdmf_rectilinear_dataset_per_process.f90</a>
      
      <a class="list-group-item" href="../sourcefile/test_xdmf_regular_contiguous_hyperslabs_handler.f90.html">test_xdmf_regular_contiguous_hyperslabs_handler.f90</a>
      
      <a class="list-group-item" href="../sourcefile/test_xdmf_regular_dataset_per_process.f90.html">test_xdmf_regular_dataset_per_process.f90</a>
      
      <a class="list-group-item" href="../sourcefile/test_xdmf_time.f90.html">test_xdmf_time.f90</a>
      
      <a class="list-group-item" href="../sourcefile/test_xdmf_topology.f90.html">test_xdmf_topology.f90</a>
      
      <a class="list-group-item" href="../sourcefile/test_xdmf_unstructured_contiguous_hyperslabs_handler.f90.html">test_xdmf_unstructured_contiguous_hyperslabs_handler.f90</a>
      
      <a class="list-group-item" href="../sourcefile/test_xdmf_unstructured_dataset_per_process.f90.html">test_xdmf_unstructured_dataset_per_process.f90</a>
      
      <a class="list-group-item" href="../sourcefile/test_xdmf_xinclude.f90.html">test_xdmf_xinclude.f90</a>
      
      <a class="list-group-item" href="../sourcefile/try_compile_hdf5_mod.f90.html">try_compile_hdf5_mod.f90</a>
      
      <a class="list-group-item" href="../sourcefile/try_compile_mpi_mod.f90.html">try_compile_mpi_mod.f90</a>
      
      <a class="list-group-item" href="../sourcefile/uniform_grid_descriptor.f90.html">uniform_grid_descriptor.f90</a>
      
      <a class="list-group-item" href="../sourcefile/unstructured_contiguous_hyperslab_factory.f90.html">unstructured_contiguous_hyperslab_factory.f90</a>
      
      <a class="list-group-item" href="../sourcefile/unstructured_dataset_per_process_factory.f90.html">unstructured_dataset_per_process_factory.f90</a>
      
      <a class="list-group-item" href="../sourcefile/unstructured_spatial_grid_descriptor.f90.html">unstructured_spatial_grid_descriptor.f90</a>
      
      <a class="list-group-item" href="../sourcefile/unstructured_uniform_grid_descriptor.f90.html">unstructured_uniform_grid_descriptor.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xdmf_attribute.f90.html">xdmf_attribute.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xdmf_character_data.f90.html">xdmf_character_data.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xdmf_contiguous_hyperslab_handler.f90.html">xdmf_contiguous_hyperslab_handler.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xdmf_dataitem.f90.html">xdmf_dataitem.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xdmf_dataset_per_process_handler.f90.html">xdmf_dataset_per_process_handler.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xdmf_domain.f90.html">xdmf_domain.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xdmf_element.f90.html">xdmf_element.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xdmf_file.f90.html">xdmf_file.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xdmf_geometry.f90.html">xdmf_geometry.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xdmf_grid.f90.html">xdmf_grid.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xdmf_handler.f90.html">xdmf_handler.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xdmf_information.f90.html">xdmf_information.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xdmf_parameters.f90.html">xdmf_parameters.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xdmf_structured_contiguous_hyperslab_handler.f90.html">xdmf_structured_contiguous_hyperslab_handler.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xdmf_structured_dataset_per_process_handler.f90.html">xdmf_structured_dataset_per_process_handler.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xdmf_time.f90.html">xdmf_time.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xdmf_topology.f90.html">xdmf_topology.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xdmf_unstructured_contiguous_hyperslab_handler.f90.html">xdmf_unstructured_contiguous_hyperslab_handler.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xdmf_unstructured_dataset_per_process_handler.f90.html">xdmf_unstructured_dataset_per_process_handler.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xdmf_utils.f90.html">xdmf_utils.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xdmf_xinclude.f90.html">xdmf_xinclude.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for.f90.html">xh5for.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_abstract_factory.f90.html">xh5for_abstract_factory.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_ch_rectilinear_grid.f90.html">xh5for_ch_rectilinear_grid.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_ch_rectilinear_non_static_grid_series.f90.html">xh5for_ch_rectilinear_non_static_grid_series.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_ch_rectilinear_static_grid_series.f90.html">xh5for_ch_rectilinear_static_grid_series.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_ch_regular_grid.f90.html">xh5for_ch_regular_grid.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_ch_regular_non_static_grid_series.f90.html">xh5for_ch_regular_non_static_grid_series.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_ch_regular_static_grid_series.f90.html">xh5for_ch_regular_static_grid_series.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_ch_unstructured_hexahedron.f90.html">xh5for_ch_unstructured_hexahedron.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_ch_unstructured_hexahedron_perf.f90.html">xh5for_ch_unstructured_hexahedron_perf.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_ch_unstructured_mixedtopology.f90.html">xh5for_ch_unstructured_mixedtopology.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_ch_unstructured_non_static_tetrahedron.f90.html">xh5for_ch_unstructured_non_static_tetrahedron.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_ch_unstructured_quadilateral.f90.html">xh5for_ch_unstructured_quadilateral.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_ch_unstructured_static_mixed_series.f90.html">xh5for_ch_unstructured_static_mixed_series.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_ch_unstructured_static_tetrahedron.f90.html">xh5for_ch_unstructured_static_tetrahedron.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_ch_unstructured_tetrahedron.f90.html">xh5for_ch_unstructured_tetrahedron.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_ch_unstructured_triangles.f90.html">xh5for_ch_unstructured_triangles.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_dpp_rectilinear_grid.f90.html">xh5for_dpp_rectilinear_grid.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_dpp_rectilinear_non_static_grid_series.f90.html">xh5for_dpp_rectilinear_non_static_grid_series.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_dpp_rectilinear_static_grid_series.f90.html">xh5for_dpp_rectilinear_static_grid_series.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_dpp_regular_grid.f90.html">xh5for_dpp_regular_grid.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_dpp_regular_non_static_grid_series.f90.html">xh5for_dpp_regular_non_static_grid_series.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_dpp_regular_static_grid_series.f90.html">xh5for_dpp_regular_static_grid_series.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_dpp_unstructured_hexahedron.f90.html">xh5for_dpp_unstructured_hexahedron.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_dpp_unstructured_mixedtopology.f90.html">xh5for_dpp_unstructured_mixedtopology.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_dpp_unstructured_non_static_tetrahedron.f90.html">xh5for_dpp_unstructured_non_static_tetrahedron.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_dpp_unstructured_quadilateral.f90.html">xh5for_dpp_unstructured_quadilateral.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_dpp_unstructured_static_tetrahedron.f90.html">xh5for_dpp_unstructured_static_tetrahedron.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_dpp_unstructured_tetrahedron.f90.html">xh5for_dpp_unstructured_tetrahedron.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_dpp_unstructured_triangles.f90.html">xh5for_dpp_unstructured_triangles.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_factory.f90.html">xh5for_factory.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_handler.f90.html">xh5for_handler.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_metadata.f90.html">xh5for_metadata.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_parameters.f90.html">xh5for_parameters.f90</a>
      
      <a class="list-group-item" href="../sourcefile/xh5for_utils.f90.html">xh5for_utils.f90</a>
      
    </div>
  </div>
</div>


  </section>
  
    <hr>    
    </div> <!-- /container -->
    <footer>
      <div class="container">
      <div class="row">
        <div class="col-xs-6 col-md-4"><p>&copy; 2016 </p></div>
        <div class="col-xs-6 col-md-4 col-md-push-4">
          <p class="text-right">
            Documentation generated by 
            <a href="https://github.com/cmacmackin/ford">FORD</a>
             on 2016-11-08T12:24:53.235950 
          </p>
        </div>
        <div class="col-xs-12 col-md-4 col-md-pull-4"><p class="text-center"> XH5For was developed by Víctor Sande Veiga</p></div>
      </div>
      <br>
      </div> <!-- /container -->    
    </footer>

    <!-- Bootstrap core JavaScript
    ================================================== -->
    <!-- Placed at the end of the document so the pages load faster -->
<!--
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
-->
    <script src="../js/bootstrap.min.js"></script>
    <!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
    <script src="../js/ie10-viewport-bug-workaround.js"></script>

    <!-- MathJax JavaScript
    ================================================== -->
    <!-- Placed at the end of the document so the pages load faster -->
    <script type="text/x-mathjax-config">
      MathJax.Hub.Config({
        TeX: { extensions: ['AMSmath.js','AMSsymbols.js','noErrors.js','noUndefined.js'], equationNumbers: { autoNumber: 'AMS' } },
        jax: ['input/TeX','input/MathML','output/HTML-CSS'],
        extensions: ['tex2jax.js','mml2jax.js','MathMenu.js','MathZoom.js'],
        'HTML-CSS': { 
           styles: { '.MathJax_Display, .MathJax .mo, .MathJax .mi, .MathJax .mn': {color: '#000000 ! important'} }
        }
      });
    </script>
    <script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
    
    
    <script src="../tipuesearch/tipuesearch_content.js"></script>
    <link  href="../tipuesearch/tipuesearch.css" rel="stylesheet">
    <script src="../tipuesearch/tipuesearch_set.js"></script>
    <script src="../tipuesearch/tipuesearch.js"></script>
    
    
  </body>
</html>